当我有三个或更多线程时,如果互斥锁在一个线程中解锁,下一个将处理哪一个?他们是先进先出规则吗?如果不是FIFO,几个线程wait unlock(),会不会有一个线程永远不会处理?他们是否在排序队列中等待,排序规则是什么?
示例代码:
//thread No.1
func1(){
std::unique_lock<mutex> lock(_mtx);
//do something, now in here,and will leave this thread then mutex will unlock
}
//thread No.2
func2(){
std::unique_lock<mutex> lock(_mtx);
//do something
}
//thread No.3
func3(){
std::unique_lock<mutex> lock(_mtx);
//do something
}