当前位置: 技术问答>linux和unix
多线程vs多进程,谁在Linux能更好发挥多核CPU的能力
来源: 互联网 发布时间:2016-05-06
本文导语: 系统: Suse Linux 9 企业版 环境:ATCA的Blade 2.4G 至强 双CPU, 8G内存 处理的内容 呼叫(没有硬盘读写,都是网络通信) 高手们帮忙解答一下, 问题是如题 BTW 某些同事说,Linux 2.6内核中,进程相当于线程还...
系统:
Suse Linux 9 企业版
环境:ATCA的Blade
2.4G 至强 双CPU, 8G内存
处理的内容
呼叫(没有硬盘读写,都是网络通信)
高手们帮忙解答一下,
问题是如题
BTW
某些同事说,Linux 2.6内核中,进程相当于线程还来出来,不知道是不是这样?
我以为在Linux中还是线程还是当成简单的进程处理的。
Suse Linux 9 企业版
环境:ATCA的Blade
2.4G 至强 双CPU, 8G内存
处理的内容
呼叫(没有硬盘读写,都是网络通信)
高手们帮忙解答一下,
问题是如题
BTW
某些同事说,Linux 2.6内核中,进程相当于线程还来出来,不知道是不是这样?
我以为在Linux中还是线程还是当成简单的进程处理的。
|
1、Linux内核是以LWP为调度单位的。
2、线程分内核线程和用户空间线程。用户空间线程被映射到内核线程执行,可绑定。
3、用多进程还是多线程,视实际应用需求而定,没有绝对优劣。
2、线程分内核线程和用户空间线程。用户空间线程被映射到内核线程执行,可绑定。
3、用多进程还是多线程,视实际应用需求而定,没有绝对优劣。
|
内核中是以进程为单位调度的.而线程库的调度又在进程之内,因此,多线程基本上不会起到什么作用.所以,你会发现Linux采用多线程编程不是很多.这个方面与windows有所区别,windows的调度单位是线程,因而,windows多线程编程很常用.
另外:内核线程从这个方面来说可以把它做进程看待(轻量级进程)
另外:内核线程从这个方面来说可以把它做进程看待(轻量级进程)
|
In linux the thread called the light processd.
|
如果不是嵌入式,我推荐还是用多进程
主要看你的进程交互多不多,数据大不大
主要看你的进程交互多不多,数据大不大
|
... 一个进程你能用多少内存呢?
内存再多 你也只能用个1-2g
所以混合使用是王道。
想像一下qq 的服务器吧,无数的server 合作来玩的。 进程间通信 很重要。
内存再多 你也只能用个1-2g
所以混合使用是王道。
想像一下qq 的服务器吧,无数的server 合作来玩的。 进程间通信 很重要。
|
差不多就这样的
|
那就要看linux的版本了吧,老版本的可能多线程会给很少的内核线程,新版本的应该会给多些,并发加大。
|
对于多处理器,进程应该能发挥更好的性能
|
当然是多线程!
|
|
还是线程吧, 多进程还得考虑进程间通信的问题,麻烦。
|
引用 1 楼 lihualoveyou 的回复:
内核中是以进程为单位调度的.而线程库的调度又在进程之内,因此,多线程基本上不会起到什么作用.所以,你会发现Linux采用多线程编程不是很多.这个方面与windows有所区别,windows的调度单位是线程,因而,windows多线程编程很常用.
另外:内核线程从这个方面来说可以把它做进程看待(轻量级进程)
|
强烈建议你到“内核及驱动程序研究区”去发布这个帖子,因为这个问题不属于“程序开发区”范畴,在“内核”区应该可以得到更多的帮助。
——————————————————————————————
《精通Unix下C语言编程与项目实践》(http://book.educity.cn/viewbook.asp?id=87 ),
本书以实际应用为目标,直接讲述在产生中最有可能知识,并提供可直接使用的应用编程模板,对初学者尤其有帮助。
——————————————————————————————
《精通Unix下C语言编程与项目实践》(http://book.educity.cn/viewbook.asp?id=87 ),
本书以实际应用为目标,直接讲述在产生中最有可能知识,并提供可直接使用的应用编程模板,对初学者尤其有帮助。