当前位置: 技术问答>linux和unix
多进程与多线程的取舍
来源: 互联网 发布时间:2015-07-13
本文导语: 本人初学UNIX,看到很多代码里边用fork产生新进程去完成某项任务,但是我觉得这里用线程也可以,而且线程的开销比产生进程要小得多,也更轻巧,为什么线程在UNIX下就不怎么受欢迎呢? 另外,我在什么时候用多...
本人初学UNIX,看到很多代码里边用fork产生新进程去完成某项任务,但是我觉得这里用线程也可以,而且线程的开销比产生进程要小得多,也更轻巧,为什么线程在UNIX下就不怎么受欢迎呢?
另外,我在什么时候用多进程比较合适,什么时候用多线程比较好,欢迎赐教!!
另外,我在什么时候用多进程比较合适,什么时候用多线程比较好,欢迎赐教!!
|
多线程比多进程麻烦些,考虑的问题比较多,如读写互斥等。
多进程编程比较简单,
fork()的子进程拷贝父进程的内存映象,
资源利用率没多线程的高。
如用vfork()等函数就是为了避免这种资源浪费。
多进程编程比较简单,
fork()的子进程拷贝父进程的内存映象,
资源利用率没多线程的高。
如用vfork()等函数就是为了避免这种资源浪费。
|
1.线程是个比较新的东东,上个世纪90年代才开始流行起来。在这之前的系统都是基于进程的,已经有大量很成熟的应用了,总不至于因为线程的流行,就一夜之间突然放弃了吧!
2.不是所有的操作系统对线程的支持都很好。Linux2.6以前的内核,线程并不比进程有什么优势,FreeBSD5.0以前的版本也是如此。
2.不是所有的操作系统对线程的支持都很好。Linux2.6以前的内核,线程并不比进程有什么优势,FreeBSD5.0以前的版本也是如此。
|
线程虽然提高了资源的利用率,但是开发的复杂度,bug的出现机率大大增加;多进程虽然是
浪费了些资源,而且在多个进程之间切换会给系统带来一定程度的开销,但是随着COW等技术的出现,这种浪费在大大的减少.
所以,如果你的程序对资源利用率不是那么苛刻,还是用多进程编程好了.
浪费了些资源,而且在多个进程之间切换会给系统带来一定程度的开销,但是随着COW等技术的出现,这种浪费在大大的减少.
所以,如果你的程序对资源利用率不是那么苛刻,还是用多进程编程好了.
|
线程的优点在于堆的数据共享,缺点也是这个,访问需要互斥。另外,标准库对线程支持比较麻烦。
|
UNIX fork是一个应用成熟的机制,所以这方面讲解较多;线程的应用是较新的东东,而且在某些系统又不成熟,所以较少用了;UNIX的版本有些不支持线程比如SCO等。
|
主要是因为采用多进程或线程的程序一般都是服务器,多进程的优点是健壮性和稳定性好,多线程处理不好会因为一个线程的崩溃造成整个系统死机
|
楼上说的对,用线程共享了同一段进程空间,处理上会有一点麻烦
进程无所谓了
进程无所谓了
|
UP