【发布时间】:2012-12-12 00:56:38
【问题描述】:
我一直在对使用 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);
}
}
我不确定我是否使用了不正确的语法,或者只是没有完全掌握正在发生的事情。
【问题讨论】:
-
您正在使用 Windows API – 这是一个库。如果您仍然要使用库,为什么不使用跨平台的库,例如 Boost.Thread?
-
这段代码你现在有什么行为?
-
或者,如果您想避免使用库,请在内联汇编中编写自己的互斥锁。
-
我没有进入“IdleThreads--”你有任何参考代码/教程在汇编中编写它吗?/
-
您是否真的想用汇编语言编写它,因为那里有高质量、预先测试、预先记录的 C++ 库?
标签: c++ multithreading winapi mutex