mutex:互斥量
https://zhuanlan.zhihu.com/p/598993031
C++11提供如下4种语义的互斥量(mutex) :
- std::mutex,独占的互斥量,不能递归使用。
- std::time_mutex,带超时的独占互斥量,不能递归使用。
- std::recursive_mutex,递归互斥量,不带超时功能。
- std::recursive_timed_mutex,带超时的递归互斥量。
互斥锁mutex是为了临界资源的安全访问,C++11的unique_lock和lock_guard可以防止释放锁导致死锁问题。一般工作中比较少用recursive_mutex、std::timed_mutex和 std::recursive_timed_mutex。
条件变量(cond):
https://blog.csdn.net/feikudai8460/article/details/109604690
在cv.wait()之前持有mutex,cv.wait()过程unlock mutex
notifiy_all: 唤醒所有线程
notify_one:
thread1.join(): 等thread1执行完,再结束
thread1.detach(): 不等thread1执行完