请问:linux下的子进程与线程的区别

如果用fork()函数创建一个子进程,那此时的父、子进程是不是可以通过时间片互相
切换?
如果用pthread_create()函数创建一个线程,请问线程与子进程有什么区别吗?
是不是可以使用子进程的程序也可以使用线程?同样,是不是可以使用线程的程序也可以使用子进程?

作者: netdoger   发布时间: 2011-06-16

POSIX线程和Linux线程还是有差别的吧,是两个实现,POSIX线程独立于Linux的。
如果你用Linux线程,内核为每个线程维护一个线程号,线程号与进程号相等的那个是主线程,主线程就是向前兼容的进程,fork调用会创建一个主线程,clone则可以创建主线程或从线程,是Linux独有的,有不同的共享选项可供选择,这种方式就可以为线程创建线程或创建进程。
不过我看man手册上说Linux线程已经废弃了,不知道是不是我的英语理解有问题。上面说创建大量线程时POSIX线程的性能更好,所以建议使用Posix线程。Posix线程提供了几种受限的调度方式,既然用Posix线程就别弄这么麻烦了吧,先fork,再pthread_create,复杂没好处。

作者: huycwork   发布时间: 2011-06-16