【C++】Mutex

学习Mutex首先需要了解互斥锁的概念,详情见之前的文章。

Mutex类就是C++中实现互斥锁的类,互斥锁有可重入和不可重入之分:

mutex是不可重入的互斥锁,recursive_mutex是可重入的互斥锁;

加上上锁时间的限定后,就有了另外两个互斥锁:mutex_timed, recursive_timed_mutex,分别是可重入/不可重入的互斥锁。

互斥锁的操作有:

上锁 lock 如果mutex未上锁,则将其上锁。否则如果已经其它线程lock,则阻塞当前线程。

上锁 try_lock 如果mutex未上锁,则将其上锁。否则返回false,并不阻塞当前线程。

解锁 unlock  如果mutex被当前线程锁住,则将其解锁。否则,是未定义的行为。

timed_mutex会多这么两种操作:

try_lock_for(duration) 如果timed_mutex未上锁,则将其上锁,否则阻塞当前线程,但最长只阻塞duration表示的时间段。

try_lock_until(time_point) 如果timed_mutex未上锁,则将其上锁,否则阻塞当前线程,但最长只会阻塞到time_point表示的时间点就不再阻塞。

try_lock_for/until可以检测到死锁的出现,这是目前想到的一种用途。

猜你喜欢

转载自blog.csdn.net/onlyongwang/article/details/82468082
今日推荐