【问题标题】:Is fork process an example of Multi threading in C?fork 进程是 C 中多线程的一个例子吗?
【发布时间】:2018-12-29 16:19:57
【问题描述】:

听说像java这样的编程语言有多线程的概念。我在研究c语言的fork过程时,我想它是不是多线程的一个例子。

【问题讨论】:

标签: c multithreading fork posix


【解决方案1】:

不,不是。 C 甚至不知道fork(),但我假设您说的是POSIX 函数fork()。这将创建一个新进程,该进程与父进程完全隔离(除了一些例外,例如它可以继承打开的文件描述符)。

对于 C 中的线程,请查看 C11 中的 thread functions。不幸的是,对这些的支持不是很广泛,但也有 POSIX 线程接口pthreads

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-12
      • 1970-01-01
      • 2018-10-20
      • 2010-11-17
      • 1970-01-01
      相关资源
      最近更新 更多