【发布时间】:2012-12-27 08:25:03
【问题描述】:
我是 Windows API 的新手,最近我了解到我不应该使用 CreateThread 和 TerminateThread。我切换到_beginthreadex,但是我不确定我应该如何use _endthreadex?
例如,这是我正在测试的一个基本函数:
// MyThreadFunction - outputs "#.) I Work" and ends
unsigned int __stdcall MyThreadFunction( void * lpParam )
{
int i = (int)lpParam;
cout << i << ".) I work! " << endl;
_endthreadex(0);
return 0;
}
我的_endthreadex 位置正确吗?我在返回 0 之前有它,这对我来说似乎很奇怪?我在有关_endthreadex 的 msdn 页面中读到,它在函数结束时自动调用,但您应该调用它以更好地清理内存,这就是我尝试将其放入的原因。它似乎不正确,抱歉,如果这是一个不好的问题。我只是想确保我尽我所能做好每一件事
【问题讨论】:
-
使用 CreateThread 没有错。除非你还在使用古老的 MSVC。
-
@DavidHeffernan 如果您不使用 _begin/_endthread,静态链接 CRT 会出现内存泄漏问题。对此更改有参考吗?
标签: c++ c windows multithreading