我需要专家关于线程使用的建议和意见。我有一个简单的“插件”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的?如果我做错了什么,请向我解释.
谢谢!
发布于 2017-04-07 10:18:08
_beginthreadex只是CreateThread的包装器。如果您的CPU使用率很高,那么您的“做某事”代码很可能是一个问题,它与最初用于创建线程的方法无关。使用分析器检查代码,并查找争用条件。请注意,您发布的代码段实际上是坏的,因为循环没有中断,因此方法具有不可访问的代码。
https://stackoverflow.com/questions/43274102
复制相似问题