多进程VS多线程

大多数应用服务器不需要进程间通信。或避免进程间通信,利用数据库交换信息。

在这个条件下,如果是UNIX/linux环境,采用多线程没必要。

多线程比多进程性能高?误导!
应该说,多线程比多进程成本低,但性能更低。
在UNIX环境,多进程调度开销比多线程调度开销,没有显著区别,就是说,UNIX进程调度效率是很高的。内存消耗方面,二者只差全局数据区,现在内存都很便宜,服务器内存动辄若干G,根本不是问题。

多进程是立体交通系统,虽然造价高,上坡下坡多耗点油,但是不堵车。
多线程是平面交通系统,造价低,但红绿灯太多,老堵车。
我们现在都开跑车,油(主频)有的是,不怕上坡下坡,就怕堵车。

高性能交易服务器中间件,如TUXEDO,都是主张多进程的。实际测试表明,TUXEDO性能和并发效率是非常高的。
TUXEDO是贝尔实验室的,与UNIX同宗,应该是对UNIX理解最为深刻的,他们的意见应该具有很大的参考意义。

 

LINUX上,多线程有些是画蛇添足的东西。
多线程,牺牲系统的优美和鲁棒性,换来的东西很少很少。
调度和多进程一样。内存节省一点,但程序失去的是容错能力(就是一条鱼能坏了一锅汤)。

 

LINUX是用进程实现的线程。线程就是数据内存共享的进程。因此,除了节省一些内存外,无其他速度的优势。
兄弟,没上QQ啊,刚看到你的贴子,一路看过来,觉得大家给的建义还不错,那个把多进程和多线程比作交通设施的比喻比较不错,我也认为多线程似乎跟高性能扯不上绝对的关系,真正的性能还是在于程序自身是不是让CPU在全速运行,就是说没有sleep或都阻塞在一个什么函数调用上。
而且我觉得你们讨论的一个片面性:似乎只研究系统在单机运行时的性能,我是做期货交易系统后台的,这样的系统的性能要求可想而知,但是后台程序没有一个使用多线程,而是采用多进程方式,其中有一个核心的数据转发进程,负责各个业务进程之间的数据交互,数据交互没有任何IPC技术,全部采用socket通讯技术,这样做的好处是部署极其灵活,可以扩充机器数量来提高系统处理性能,还可以从硬件上避免单点故障。
我觉得你的系统可以参考Tuxedo的设计,采用多进程通讯,进程通讯采用socket技术,关键设计一下核心的数据交换进程,由它负责系统各个业务进程的交互,这样可以通过扩展业务主机的数量来进行横向扩展,业务与业务之间互不干涉,一个业务进程挂了,其它业务还是正常运行。
有兴趣上QQ聊吧,我正在做这个数据交换进程,借监了TCP/IP链路层、网络层、传输层的设计,其实这里说的数据交换进程其实就相当于消息路由器,相关技术可以参考TCP/IP的网络层设计。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值