当前位置: 技术问答>linux和unix
多线程好还是多进程?
来源: 互联网 发布时间:2015-12-12
本文导语: 多线程占用空间小,效率高,而且灵活,多进程呢? | 多进程中每个进程有自己独立的内存空间.一个进程死掉不会影响其他的进程. | 楼上的理解错误,如果一个线程死掉了,...
多线程占用空间小,效率高,而且灵活,多进程呢?
|
多进程中每个进程有自己独立的内存空间.一个进程死掉不会影响其他的进程.
|
楼上的理解错误,如果一个线程死掉了,一定会影响其他线程。并且可能影响到整个进程。
|
>>>但是一个线程死掉也不会影响其他线程啊,甚至可以在主线程里终止子线程
一个线程死掉了,他的锁谁来解锁啊??打开的文件句柄谁来关闭啊。
一个线程死掉了,他的锁谁来解锁啊??打开的文件句柄谁来关闭啊。
|
所以apache httpd 还是用进程模型而没有用线程模型,就是因为线程可能可能会出问题。
进程死掉了有系统收拾,而线程死掉了你要收拾--你能收拾吗?
进程死掉了有系统收拾,而线程死掉了你要收拾--你能收拾吗?
|
除了多占一点资源,以及不可以访问别的进程地址空间外,进程和线程没有太大差别。线程的实现就是一种轻量级进程(light weight process = LWP ),一样有PCB,以及三级页表,只不过结构更简单一点。
|
不过线程还是很有优势的。不需要进程间通信。创建线程的时间要比进程快很多。
当然了也可以在线程里创建进程 。
当然了也可以在线程里创建进程 。
|
看具体需求了,稳定性要求高的还是用进程
|
Linux实现线程的机制是非常独特的,与Windows完全不同。从Linux内核的角度来说完全没有线程的概念。Linux把所有的线程都当作进程来实现。内核并没有准备特别的调度算法或定义特别的数据结构来表征线程。相反,线程仅仅被看作一个与其他进程共享某些资源的进程而已。
所以,多线程和多进程在Linux中并没有本质上的区别。只不过因为可以共享存储空间等资源,线程间的通讯,同步似乎更容易些。
所以,多线程和多进程在Linux中并没有本质上的区别。只不过因为可以共享存储空间等资源,线程间的通讯,同步似乎更容易些。
|
但是多线程控制过于复杂,本来unix是没有多线程模式的.
|
估计这帖子要是发在Windows论坛上或者Java论坛上,就都是说线程好的了。
好像是《Unix程序设计艺术》里说的,后来的操作系统用线程原因是:
1、创建进程的代价太高
2、没有合适的进程间通讯的机制
这两点在Unix上都不是问题。
好像是《Unix程序设计艺术》里说的,后来的操作系统用线程原因是:
1、创建进程的代价太高
2、没有合适的进程间通讯的机制
这两点在Unix上都不是问题。