Windows中的CreateThread和beginthread API有什么区别?哪一个更适合创建线程?
我读的文档约_beginthreadex和_endthreadex,但也有几件事情我不明白.
请注意,文档同时记录"扩展"和正常功能,但我没有使用_beginthread和_endthread; 只有他们的扩展版本.
您可以显式调用_endthread或_endthreadex来终止线程; 但是,当线程从作为参数传递的例程返回时,会自动调用_endthread或_endthreadex.通过调用endthread或_endthreadex来终止线程有助于确保为线程分配的资源得到适当恢复.
_endthreadex被自动调用,为什么调用它有助于确保"适当的资源恢复"?不论我是否打电话都不应该有任何区别,或者是这样吗?_endthread会自动关闭线程句柄(而_endthreadex则不会).因此,在使用_beginthread和_endthread时,不要通过调用Win32 CloseHandle API显式关闭线程句柄.
_endthreadex 不关闭手柄,为什么我不应该关闭它CloseHandle?我的所有线程只是通过从主函数返回而自动终止,并且从不强行终止.根据文档,当发生这种情况时会_endthreadex自动调用.
这虽然不会关闭手柄.假设我确实需要关闭它,尽管如上所述,我怎么能这样做,因为此时线程已经死了?我应该以某种方式从另一个线程关闭它吗?如果我把它打开怎么办?