当前位置:  开发笔记 > 前端 > 正文

CreateThread vs fork()

如何解决《CreateThreadvsfork()》经验,为你挑选了2个好方法。

我们在fork()和CreateThread之间有任何关系吗?CreateThread内部调用fork()有什么?



1> Edouard A...:

在NT中,基本工作单元称为线程(即NT调度线程,而不是进程.).用户线程在进程的上下文中运行.当您调用CreateThread时,您请求NT内核在您的进程上下文中分配一个工作单元(您还有基本上可以自行安排的线程的光纤,但这超出了您的问题的主题).

当您调用CreateThread时,您为函数提供了一个在调用函数后将运行的入口点.代码必须位于进程的虚拟空间内,并且页面必须具有执行权限.简而言之,你给一个函数指针.;)

fork()是一个UNIX函数,它请求内核创建正在运行的进程的副本.父进程获取子进程的pid,子进程得到0(这样你知道你是谁).

如果您希望在Windows中创建进程,则可以调用CreateProcess函数,但这不像fork().原因是大多数时候你会创建线程,而不是进程.

如您所见,CreateThread和fork之间没有关系.


*如果您希望在Windows中创建进程,请调用CreateProcess函数,但这不像fork().原因是大多数时候你会创建线程,而不是进程.*使用哪一个是两者之间差异的结果而不是原因:)

2> sharptooth..:

fork()仅存在于Unix系统上,它创建一个与调用者具有相同状态的新进程.CreateThread()在同一进程中创建一个新线程.


Windows NT,2000等支持posix,因此支持fork http://www.robelle.com/smugbook/process.html
推荐阅读
手机用户2402852387
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有