有什么更好的方法来启动线程_beginthread
,_beginthreadx
或CreateThread
?
我正在尝试确定_beginthread
,_beginthreadex
和CreateThread
的优点/缺点是什么。所有这些函数都将线程句柄返回到新创建的线程,我已经知道,当发生错误时,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)。