标签: linux pthreads fork
假设在POSIX语义中,我有一个进程A,它有两个线程,t1和t2。 t1是主线程,然后,在t2中我调用fork to fork进程B。
那么这个新流程B也有t1和t2吗?或者只是有t2?
换句话说,fork也会将多个线程复制到新进程吗?
答案 0 :(得分:2)
使用单个线程创建子进程 - 调用fork()的线程。父节点的整个虚拟地址空间在子节点中复制,包括互斥锁,条件变量和其他pthreads对象的状态;使用pthread_atfork(3)可能有助于处理这可能导致的问题。
Man 2 fork Manual