假设我有一个 Mutex、两个线程、一个函数和一个循环(伪代码)。 功能:
void Update(){
Mutex.enter();
...// time: 10 ms
Mutex.leave();
}
主要.cpp:
void main(){
...// Starting thread
while(true)
Update();
}
主题:
void Thread(void *){
Mutex.enter();
... //
Mutex.leave();
}
但是Function不断的调用,所以Mutex小的时候是空闲的。 Thread 进入 Mutex 的几率有多大?如果低,如何解决?
最佳答案
如果您使用的是增强线程 ( link ),那么我会使用 yield()
.它将允许任何其他“等待”线程“有机会”运行。
可能还有一种 win32 或 pthreads 方法可以做到这一点。
编辑:顺便说一下,在锁的 yield()
之外使用。如果它在锁内,显然那将是无用的。
Edit2:下面是针对不同平台的函数:
如果您不在这些平台中的任何一个上,请阅读这些链接中的说明,并在您的框架中查找可以执行相同操作的函数。
关于c++ - 信号量(Mutex)的麻烦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10399714/