_beginthread
、_beginthreadx
或 CreateThread
有什么更好的启动线程的方法?
我正在尝试确定 _beginthread
、_beginthreadex
和 CreateThread
的优点/缺点。所有这些函数都返回一个新创建线程的线程句柄,我已经知道 CreateThread 在发生错误时会提供一些额外的信息(可以通过调用 GetLastError
来检查)...但是什么是在使用这些功能时我应该考虑哪些事项?
我正在使用 Windows 应用程序,因此跨平台兼容性已经不可能了。
我浏览了 msdn 文档,但我无法理解,例如,为什么有人会决定使用 _beginthread 而不是 CreateThread,反之亦然。
干杯!
更新:
好的,感谢您提供的所有信息,如果我使用 _beginthread()
,我还阅读了一些无法调用 WaitForSingleObject()
的地方,但如果我在线程中调用 _endthread()
不应该工作吗?那里有什么交易?
最佳答案
CreateThread()
是一个原始的 Win32 API 调用,用于在内核级别创建另一个控制线程。
_beginthread()
和 _beginthreadex()
是在后台调用 CreateThread()
的 C 运行时库调用。一旦 CreateThread()
返回,_beginthread/ex()
会负责额外的记账,以使 C 运行时库在新线程中可用且一致。
在 C++ 中,您几乎肯定应该使用 _beginthreadex()
,除非您根本不会链接到 C 运行时库(又名 MSVCRT*.dll/.lib)。
关于c++ - Windows 线程 : _beginthread vs _beginthreadex vs CreateThread C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/331536/