我们是否在fork()和CreateThread之间有任何关系?CreateThread内部是否会调用fork()?
我们是否在fork()和CreateThread之间有任何关系?CreateThread内部是否会调用fork()?
fork()只存在于Unix系统中,它创建一个与调用方状态相同的新进程。CreateThread()在同一进程中创建一个新线程。
Windows和Unix的进程模型根本上是非常不同的,因此没有直接将一个API映射到另一个API的方法。
fork()将当前进程克隆为两个。在父进程中,fork()返回pid,在子进程中返回0。通常用法如下:
int pid;
if (pid = fork()) {
// this code is executed in the parent
} else {
// this code is executed in the child
}
Cygwin是一个仿真层,用于在Windows上构建和运行Unix应用程序,它使用CreateProcess()来仿真fork()的行为。
CreateThread - 用于线程,fork - 用于创建重复进程。在Windows中没有本地的方法来实现fork功能(至少通过Win32不行)。
fork()
的示例实现。 - 0xC0000022L我发现这个链接可能有助于澄清一些关于分叉/线程的事实。 在这里分享:http://www.geekride.com/index.php/2010/01/fork-forking-vs-threading-thread-linux-kernel/