我们在fork()和CreateThread之间有任何关系吗?CreateThread内部调用fork()有什么?
在NT中,基本工作单元称为线程(即NT调度线程,而不是进程.).用户线程在进程的上下文中运行.当您调用CreateThread时,您请求NT内核在您的进程上下文中分配一个工作单元(您还有基本上可以自行安排的线程的光纤,但这超出了您的问题的主题).
当您调用CreateThread时,您为函数提供了一个在调用函数后将运行的入口点.代码必须位于进程的虚拟空间内,并且页面必须具有执行权限.简而言之,你给一个函数指针.;)
fork()是一个UNIX函数,它请求内核创建正在运行的进程的副本.父进程获取子进程的pid,子进程得到0(这样你知道你是谁).
如果您希望在Windows中创建进程,则可以调用CreateProcess函数,但这不像fork().原因是大多数时候你会创建线程,而不是进程.
如您所见,CreateThread和fork之间没有关系.
fork()仅存在于Unix系统上,它创建一个与调用者具有相同状态的新进程.CreateThread()在同一进程中创建一个新线程.