在Linux系统上,并在子进程查看现有线程方式与父进程一样吗?
int main() {
//create thread 1
int child_pid = fork();
if ( 0 == child_pid)
{
..
}
else
{
..
}
由于整个地址空间将被复制子进程,会发生什么变化线程的状态。 如果上述部分线程1正在等待一个条件信号是什么。 它是在子过程中的等待状态中呢?
在Linux系统上,并在子进程查看现有线程方式与父进程一样吗?
int main() {
//create thread 1
int child_pid = fork();
if ( 0 == child_pid)
{
..
}
else
{
..
}
由于整个地址空间将被复制子进程,会发生什么变化线程的状态。 如果上述部分线程1正在等待一个条件信号是什么。 它是在子过程中的等待状态中呢?
在Linux线程时下试图留POSIX complient。 只有调用线程复制,没有其它线程(请注意,例如,在Solaris上,你可以选择你根据链接库什么什么叉子一样)
从http://www.opengroup.org/onlinepubs/000095399/functions/fork.html :
的过程应与一个单独的线程来创建。 如果一个多线程进程调用fork(),新工艺应包含调用线程的一个副本,它的整个地址空间,可能包括互斥和其他资源的状态。 因此,为了避免错误,子进程可能仅执行异步信号安全操作,直到为exec函数被调用时为止。 叉处理程序可以由pthread_atfork()函数的装置,以便保持整个叉应用不变量来建立()调用。
线程不从子过程中使用叉继承Linux系统上()。 在深入源是在这里: http://linas.org/linux/threads-faq.html