获得徽章 0
赞了这篇文章
赞了这篇文章
赞了这篇文章
赞了这篇文章
有大佬能回答一下这个问题吗?
最近在学习go并发编程中Mutdx时发现个问题:现在有两个goroutine g1和g2,g1获取了Mutex锁,g2处于阻塞队列,然后来了个g3,g3在自旋时将mutexWoken置位了,这时g1释放了锁,由于g3置位了mutexWoken那么g2就不会被唤醒,g3就获取到了锁。如果后面来了g4、g5、g6都和g3一样的话g2不就产生饥饿了吗?查看源码发现Mutex的饥饿模式只有在goroutine从阻塞中唤醒时才会去判断是否进入饥饿状态,g2一直没有被唤醒不就一直饥饿了吗?
最近在学习go并发编程中Mutdx时发现个问题:现在有两个goroutine g1和g2,g1获取了Mutex锁,g2处于阻塞队列,然后来了个g3,g3在自旋时将mutexWoken置位了,这时g1释放了锁,由于g3置位了mutexWoken那么g2就不会被唤醒,g3就获取到了锁。如果后面来了g4、g5、g6都和g3一样的话g2不就产生饥饿了吗?查看源码发现Mutex的饥饿模式只有在goroutine从阻塞中唤醒时才会去判断是否进入饥饿状态,g2一直没有被唤醒不就一直饥饿了吗?
展开
3
1
赞了这篇文章
赞了这篇文章
赞了这篇文章
赞了这篇文章
赞了这篇文章
赞了这篇文章
赞了这篇文章