c++ - 我在哪里使用

admin | 世界杯足球赛事

答案已经在简短版本中给出,如果您想了解更多 - 您的函数的返回实际上将用作_endthreadex调用中的参数。这是启动线程时运行时正在执行的操作。该线程确实从 CRT 中的某个起点开始,内部_callthreadstartex正在执行:

_endthreadex(MyThreadFunction(...));

也就是说,一旦你返回,_endthreadex就会立即为你调用,并且它会从线程中退出。

你能明确地使用它吗?是的,您可以,而且您的代码也很好,因为无论您自己调用它还是为您调用它都无关紧要,前提是在途中没有发生泄漏(例如,特别是尚未调用的析构函数)局部变量)。

由于无论如何都会为您调用它,并且从函数返回在释放本地资源方面更安全,因此进行显式调用没有任何用处、优势和意义。

MSDN 在备注部分基本上解释了完全相同的权利。

您可以显式调用 _endthread 或 _endthreadex 来终止线程;但是,当线程从作为参数传递给 _beginthread 或 _beginthreadex 的例程返回时,会自动调用 _endthread 或 _endthreadex。通过调用 endthread 或 _endthreadex 来终止线程有助于确保正确恢复为线程分配的资源。