有什么更好的方法来启动线程_beginthread_beginthreadxCreateThread

我正在尝试确定_beginthread_beginthreadexCreateThread的优点/缺点是什么。所有这些函数都将线程句柄返回到新创建的线程,我已经知道,当发生错误时,CreateThread会提供一些额外的信息(可以通过调用GetLastError进行检查)...但是当我发生错误时,我应该考虑哪些事项?正在使用这些功能?

我正在使用Windows应用程序,因此跨平台兼容性已经成为不可能。

我已经阅读了msdn文档,例如,我什至不明白为什么有人会决定使用_beginthread而不是CreateThread,反之亦然。

干杯!

更新:
好的,谢谢您提供的所有信息,如果在使用WaitForSingleObject()的话,我在一些地方也看不到_beginthread(),但是如果在线程中调用_endthread(),那行不通吗?那边有什么事

最佳答案

CreateThread()是原始的Win32 API调用,用于在内核级别创建另一个控制线程。
_beginthread()_beginthreadex()是C运行时库调用,它们在后台调用CreateThread()。一旦CreateThread()返回,_beginthread/ex()会进行额外的簿记,以使C运行时库在新线程中可用并保持一致。

在C++中,几乎可以肯定应该使用_beginthreadex(),除非您根本不会链接到C运行时库(aka MSVCRT * .dll/.lib)。

10-08 00:00