您现在的位置:首页 > >

【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可以检测到死锁的出现,这是目前想到的一种用途。


热文推荐
猜你喜欢
友情链接: