fork() 和 CreateThread 之间有什么关系吗?有没有什么 CreateThread 内部调用 fork()?
最佳答案
在 NT 中,基本的工作单元称为线程(即 NT 调度线程,而不是进程。)。用户线程在进程的上下文中运行。当您调用 CreateThread 时,您请求 NT 内核在您的进程上下文中分配一个工作单元(您也有纤维,这些纤维基本上是您可以自己安排的线程,但这超出了您的问题的主题)。
当您调用 CreateThread 时,您为该函数提供了一个入口点,该入口点将在该函数被调用后运行。代码必须在进程的虚拟空间内,页面必须有执行权限。简单地说,你给了一个函数指针。 ;)
fork() 是一个 UNIX 函数,它请求内核创建正在运行的进程的副本。父进程获取子进程的pid,子进程获取0(这样你就知道你是谁了)。
如果你想在 Windows 中创建一个进程,你可以调用 CreateProcess 函数,但它的行为不像 fork()。原因是大多数时候您将创建线程,而不是进程。
如你所见,CreateThread和fork之间没有任何关系。
关于windows - 创建线程与 fork(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/619019/