第三章讨论了系统调用fork()如何创建独立的、复制的进程,但是在多线程程序中,系统调用fork()和exec()具有不同的语义

如果一个线程在程序中调用了fork()系统调用,新的进程会复制所有的线程??还是只复制调用线程??

很多UNIX都实现了这两种模式,分为不同的函数。

如果一个线程调用exec()系统调用,在参数中指定的程序将替换整个进程,包括所有线程。

使用哪一个版本的fork()取决于应用程序。

  • 如果在forking之后立即调用exec(),那么复制所有的线程是不必要的,因为在exec()参数中指定的程序将替换该进程。在此实例中,仅复制调用线程是适当的。

  • 但是,如果单独的进程在forking之后不调用exec(),则单独的进程应该复制所有的线程。

results matching ""

    No results matching ""