我一直在使用C ++对多线程解决方案进行大量研究,但由于某种原因,我无法找到任何具体的语法(使用不使用任何库)我将图像渲染到屏幕上为每个线程分隔屏幕空间。
我想要发生的是让线程递增一个值并挂起,一旦所有线程都通过它就会将它显示在屏幕上,然后释放线程再次启动。
void WaitForThreads(){
WaitForSingleObject( hCompleteThread, INFINITE );
IdleThreads++;
if(IdleThreads==CoreMax){
//Copy image to screen
ReleaseMutex( hRelease);
}
ReleaseMutex( hCompleteThread);
WaitForSingleObject( hRelease, INFINITE );
IdleThreads--;
if(IdleThreads>0){
ReleaseMutex( hRelease);
}
}
我不确定我是使用错误的语法还是不完全掌握正在发生的事情。
答案 0 :(得分:0)
如果没有更多的背景,就无法分辨出你的目标。如何创建hCompleteThread和hRelease? - 也就是说,他们是什么?
无论如何,你可以使用信号量。信号量为你做计数。它们非常适合这种生产者/消费者。