0

假设在 POSIX 语义中,我有一个进程 A,它有两个线程,t1 和 t2。t1 是主线程,然后,在 t2 中我调用 fork 来 fork 进程 B。

那么这个新进程 B 是否也有 t1 和 t2 呢?还是只有t2?

换句话说,fork 是否也将多个线程复制到新进程?

4

1 回答 1

2

子进程是使用单个线程创建的——调用 fork() 的线程。父级的整个虚拟地址空间在子级中复制,包括互斥锁、条件变量和其他 pthreads 对象的状态;使用 pthread_atfork(3) 可能有助于处理这可能导致的问题。

Man 2 前叉手册

于 2013-06-05T09:18:30.717 回答