我需要专家对线程使用的建议和意见。我有一个简单的"插件" DLL有2-3个线程,每个都以 _beginthreadex()开头。
线程看起来像这样:
unsigned __stdcall Thread(void* pArguments)
{
while ( true )
{
// do something
Sleep(3000);
}
_endthreadex( 0 );
return 0;
}
现在,这个线程没有很高的CPU使用率,它在大多数新PC上按预期工作,但是我发现在具有双核CPU的旧PC上也是如此使用这种线程方法运行2-3个实例需要大量的CPU。我无法解释自己为什么,而且我不知道该怎么做。
我也尝试了 CreateThread(),但它没有做出改变。有人可以指导我如何创建一个在所有PC上运行相同的线程吗?如果我做错了什么,那么请向我解释一下......
谢谢!
答案 0 :(得分:0)
_beginthreadex只是CreateThread的包装器。如果您遇到高CPU使用率,那么您最有可能出现问题"做某事"与最初用于创建线程的方法无关的代码。使用分析器检查您的代码并查找竞争条件。请注意,您发布的代码段实际上已损坏,因为循环没有中断,因此方法无法访问代码。