C ++在旧PC上线程化CPU使用问题

时间:2017-04-07 09:06:42

标签: c++ windows multithreading

我需要专家对线程使用的建议和意见。我有一个简单的"插件" 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上运行相同的线程吗?如果我做错了什么,那么请向我解释一下......

谢谢!

1 个答案:

答案 0 :(得分:0)

_beginthreadex只是CreateThread的包装器。如果您遇到高CPU使用率,那么您最有可能出现问题"做某事"与最初用于创建线程的方法无关的代码。使用分析器检查您的代码并查找竞争条件。请注意,您发布的代码段实际上已损坏,因为循环没有中断,因此方法无法访问代码。