0

我一直在使用 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);
    }
}

我不确定我是否使用了不正确的语法,或者只是没有完全掌握正在发生的事情。

4

1 回答 1

0

没有更多的上下文,就不可能说出你在做什么。hCompleteThread 和 hRelease 是如何创建的?- 也就是说,它们是什么?

无论如何,您可以使用信号量。信号量为您计算。它们非常适合这种生产者/消费者的东西。

于 2012-12-12T01:27:03.323 回答