gpt4 book ai didi

c++ - 信号量(Mutex)的麻烦

转载 作者:行者123 更新时间:2023-11-28 03:37:33 24 4
gpt4 key购买 nike

假设我有一个 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:下面是针对不同平台的函数:

  • Win32:SwitchToThread() msdn link .
  • Linux/Unix pthreads:`pthread_yield()' link

如果您不在这些平台中的任何一个上,请阅读这些链接中的说明,并在您的框架中查找可以执行相同操作的函数。

关于c++ - 信号量(Mutex)的麻烦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10399714/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com