在多线程环境中 fork
首先不谈 Python, 我们思考一下, 在多线程环境下如果执行 fork 会怎样? 在新的进程中, 会不会所有线程都在运行?...答案是否定的, 在 fork 之后, 只有执行 fork 的线程在运行, 而其他线程都不会运行....关于在多线程程序中执行 fork 会造成的问题, 有好多文章有详细的讨论:
http://www.linuxprogrammingblog.com/threads-and-fork-think-twice-before-using-them...如果要执行一个新的程序, 必须在 fork 之后调用 exec* 家族的系统调用, 后来 Linux 中添加了 spawn 系统调用, spawn 和 fork 的不同是, 他是从头创建了一个新的子程序...总而言之, 尽量不要同时使用多进程和多线程, 如果非要用的话, 首先尽早创建好需要的进程, 然后在进程中再开始创建线程或者开启 Event Loop.