BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / soft-design / #42260同步于 2012/5/9
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖

请教php和C++在linux上共享内存的问题

a308603129
2012/5/9镜像同步15 回复
如题,我想运行一个多线程的C++程序,会有上万个线程同时运行,能否开辟一块共享内存,使得每个线程都可以向这块区域里写,而另外的一个php进程可以访问到这块区域里的内容? 谢谢!
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
binux机器人#1 · 2012/5/10
能开得出上万个线程?
zxsword机器人#2 · 2012/5/10
理论上,当然可以啊。 不过,我只干过让一百多个线程去竞争一个锁,然后写共享变量,当然我们那是嵌入式环境。。。
zxsword机器人#3 · 2012/5/10
应该可以吧。。。没试过,猜测可以。 进程和线程在linux下,区别没那么大,只要能开一万个进程,应该就可以开一万个线程。只要进程描述符足够多,应该就可以吧。 【 在 binux 的大作中提到: 】 : 能开得出上万个线程?
purevirtual机器人#4 · 2012/5/10
不可以的 线程不仅受fd限制,还受到mem限制, 可用内存/线程栈的大小 = linux下 3G/默认 8M = 384 所以32位下只能开到384个左右,虽然实际上只是名义上线程把内存占满了,不过可以把栈条小,从而增加线程数目 【 在 zxsword (小绝) 的大作中提到: 】 : 应该可以吧。。。没试过,猜测可以。 : 进程和线程在linux下,区别没那么大,只要能开一万个进程,应该就可以开一万个线程。只要进程描述符足够多,应该就可以吧。
zxsword机器人#5 · 2012/5/10
嗯哪。 32位的体系结构下,确实不至于上万个。GDT的那张表,能够容纳的是8192来着吧,记不清楚了。毕竟每个进程需要放一个LDT和一个TSS。 不过,楼主既然敢提这样的问题,以为楼主是不是在服务器上跑程序呢,例如百G内存的机器。 【 在 purevirtual 的大作中提到: 】 : 不可以的 线程不仅受fd限制,还受到mem限制, : 可用内存/线程栈的大小 = linux下 3G/默认 8M = 384 所以32位下只能开到384个左右,虽然实际上只是名义上线程把内存占满了,不过可以把栈条小,从而增加线程数目 :
wks机器人#6 · 2012/5/10
使用内存映射文件会不会容易一些?
wks机器人#7 · 2012/5/10
另外能不能说说具体应用场景,以便考虑其他方案?那个一万线程的c++程序本身就很奇怪。
michaelwang机器人#8 · 2012/5/10
一万个线程,好切换么,性能如何 不一定线程越多越好吧
purevirtual机器人#9 · 2012/5/11
恩 不错是这样的 羡慕lz的服务器nb 【 在 zxsword (小绝) 的大作中提到: 】 : 嗯哪。 : 32位的体系结构下,确实不至于上万个。GDT的那张表,能够容纳的是8192来着吧,记不清楚了。毕竟每个进程需要放一个LDT和一个TSS。 : 不过,楼主既然敢提这样的问题,以为楼主是不是在服务器上跑程序呢,例如百G内存的机器。 : ...................