我听说Java之类的编程语言具有多线程的概念。当我用c语言研究fork进程时,我想这是否是多线程的示例。
答案 0 :(得分:5)
不,不是。 C甚至都不知道fork()
,但是我认为您是在谈论POSIX函数fork()
。这样会创建一个新进程,该进程与父进程完全隔离(除了少数例外,例如它可以继承打开的文件描述符)。
对于使用C进行线程化,请查看C11中的thread functions。不幸的是,对它们的支持不是很广泛,但是还有POSIX线程接口pthreads。
答案 1 :(得分:1)
fork
可用于模拟线程(这肯定是将并行性引入计算的一种方式),但是与父进程共享的资源却少得多。在许多系统上,可以通过在派生之前创建MAP_SHARED
映射来共享部分地址空间,但是除此之外,这两个过程是分开的。甚至文件描述符也仅被继承-如果您关闭它们或打开新的文件描述符,则其他过程不受此影响。