[C++11 多线程同步] --- 互斥锁

Posted Overboom

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[C++11 多线程同步] --- 互斥锁相关的知识,希望对你有一定的参考价值。

1 四种互斥锁

在 C++11 中一共提供了四种互斥锁:

std::mutex:独占的互斥锁,不能递归使用
std::timed_mutex:带超时的独占互斥锁,不能递归使用
std::recursive_mutex:递归互斥锁,不带超时功能
std::recursive_timed_mutex:带超时的递归互斥锁

互斥锁在有些资料中也被称之为互斥量,二者是一个东西。

互斥锁是一种简单的加锁的方法来控制对共享资源的访问。只要某一个线程上锁了,那么就会强行霸占公共资源的访问权,其他线程试图访问资源会被阻塞,直到这个线程解锁了。互斥锁只有两种状态,即上锁( lock )和解锁( unlock )。

2 mutex

2.1 mutex的成员函数

2.1.1 lock()

lock() 函数用于给临界区加锁,并且只能有一个线程获得锁的所有权,它有阻塞线程的作用,函数原型如下:

void lock();

2.1.2 try_lock()

try_lock()函数原型如下:

bool try_lock();

try_lock() 不会阻塞线程,l

以上是关于[C++11 多线程同步] --- 互斥锁的主要内容,如果未能解决你的问题,请参考以下文章

[C++11 多线程同步] --- 互斥锁

如何在c中正确同步多线程与互斥锁?

在 C 中使用共享变量和互斥锁进行线程同步

多线程安全----同步锁(互斥锁)

Linux 线程同步都有哪些方法?

多线程的同步和互斥有啥区别