Sam*_*mer 1 c++ winapi multithreading
正如标题所说,我有一个使用以下创建的线程:
 CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)this->TaskProc, this, 0, NULL);
在TaskProc,我有一个无限的while循环:
while(true)
{
// large code with lots of initialization
// get task from another thread
//  Switch (task)
// at each case you would perform a task
Sleep(1);
}
我试图减少我的代码所花费的时间,我觉得Sleep(1)在while循环结束时没有必要!因为在点击之前已经在while循环中完成了很多计算Sleep(),是否可以删除Sleep()?
编辑1:我不知道为什么这个问题引起了混乱和几次投票,这是一个包含很多线程(大约5个)的非常大的代码的一部分,我想知道什么时候我们必须在每个循环中添加等待!接受的答案似乎给出了从哪里开始的良好暗示.虽然,我认为这个问题可以有更好的答案.
这取决于你的循环中发生了什么.如果它正在忙等待并且通常什么都不做,那么Sleep调用(这看起来像Windows,因此它延迟1ms)将产生调度程序并可能阻止线程旋转CPU内核并打开CPU风扇.如果它总是有事可做,那么1ms的睡眠确实会加起来并减慢你的执行速度.我建议在有和没有Sleep调用的情况下观察任务管理器中的CPU使用情况,并使用已知输入对代码进行基准测试,看看实际需要更长时间的内容.
| 归档时间: | 
 | 
| 查看次数: | 2589 次 | 
| 最近记录: |