linux中线程比进程开销小,Linux 下进程和线程的选择问题

1、Linux内核其实是用进程来实现线程的,所以在内核某些方面的处理,两者资源和开销可能差不多,但其它平台的实现就不一定了。

2、如果要实现一个web服务器,一个client连接对应一个线程,和一个client连接对应一个进程,两者有很大的不同,一个系统最多的进程数是有限制的,数量也不会太多,而线程真的可以有很多(我没研究过)。当然另一个做法可以是开一个进程来处理多个client连接,但是线程间的同步和数据共享,要比在进程间来得容易,而且进程间的通讯开销还是比较大的(比如socket、共享内存、消息队列等)。线程间如果锁使用不当,比如锁粒度太大,导致性能不理想,但这是设计的问题。

3、用多进程的方法来实现某些需求很合适,比如像google chrome,每一个网页(标签)就用一个进程来处理,所以某个标签崩溃了(网页有flash经常会崩溃:)),不会导致整个浏览器崩溃,这是选择进程的优点。缺点也是显而易见的,开一堆网页后,发现系统有一堆的进程,用户和系统内核都不会喜欢这样的:)另外,一个程序有多个进程并发执行任务,每个进程可以在单独的CPU中运行,这是比较高效的利用了多(核)CPU,因为线程在多个CPU调度的时候,有数据的共享和同步,在处理时可能要等待其它CPU(或有CPU间的数据共享)让出锁,这样就会有开销,所以某种程度讲,选用多进程模型有时是有意利用多CPU(不知这样说得不得当?)

4、由于对系统来说,一个进程的资源是有限制的,比如文件打开的最大数量、能创建的线程的数量、网络连接数量等,所以通常对一个服务器程序来说,在一个机器上运行多个实例(多个进程)也是一个提高机器性能使用率的方法。

所以,不能一概而定,线程和进程各有存在的目的和意义,要根据自己程序的需求来选择。以上我只是把一些相关的东西列出来,具体需要你自己去搜索和证实。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值