在上一篇文章C++11多线程--线程间共享数据(存在的问题)_qls315的博客-CSDN博客
中介绍了线程间共享数据存在的问题。本篇文章以及后续文章基于C++ Concurrency in Action (豆瓣)
这本书,讲解如何保护线程间共享数据,使其不变量不被破环。
本篇文章主要讲解,锁的基本使用,以及使用锁的第一个小建议。
根据std::mutex - cppreference.com
可知,std::mutex是C++标准库提供的一个同步原语,可以用来保护多线程间共享数据的不变量被破环。
std::mutex提供了如下三个常用接口
- lock 锁住mutex,如果这个mutex已经被锁住,那么相应线程将被阻塞
-
- try_lock 如果mutex不可用,则立马返回,如果可用则锁住mutex
-
- unlock 解锁