fork过程是C语言中多线程的示例吗?

时间:2018-07-21 16:26:32

标签: c multithreading fork posix

我听说Java之类的编程语言具有多线程的概念。当我用c语言研究fork进程时,我想这是否是多线程的示例。

2 个答案:

答案 0 :(得分:5)

不,不是。 C甚至都不知道fork(),但是我认为您是在谈论POSIX函数fork()。这样会创建一个新进程,该进程与父进程完全隔离(除了少数例外,例如它可以继承打开的文件描述符)。

对于使用C进行线程化,请查看C11中的thread functions。不幸的是,对它们的支持不是很广泛,但是还有POSIX线程接口pthreads

答案 1 :(得分:1)

fork可用于模拟线程(这肯定是将并行性引入计算的一种方式),但是与父进程共享的资源却少得多。在许多系统上,可以通过在派生之前创建MAP_SHARED映射来共享部分地址空间,但是除此之外,这两个过程是分开的。甚至文件描述符也仅被继承-如果您关闭它们或打开新的文件描述符,则其他过程不受此影响。