C++关于锁的总结(一)
2020-12-13 14:42
标签:访问级别 cond second join() 操作 ret oid return 定义 线程中的锁分为两种,互斥锁和共享锁。 相关的头文件有 这里先讨论 如果需要使用共享锁,则需要使用到 该锁可用于保护被多个线程同时访问的共享数据。 如果一个线程已经获取了互斥锁,则其他线程都无法获取该锁。 说到这里,为了实现该锁的互斥和共享,不得不介绍 在下面的代码中均以测试过,编译选项为 由于c++中的 输出为: 从这个输出可以看出: 如果一个线程已经获取了共享锁,则其他任何线程都无法获取互斥锁,但是可以获取共享锁。 从这个输出可以看出,验证了如果一个线程已经获取了互斥锁,则其他线程都无法获取该锁。 C++关于锁的总结(一) 标签:访问级别 cond second join() 操作 ret oid return 定义 原文地址:https://www.cnblogs.com/fenghualong/p/11568398.htmlC++关于锁的总结(一)
,
,前者具有std::unique_lock
操作,用于实现互斥功能,后者具有std::shared_lock
操作,用于完成共享锁操作。std::shared_mutex
这个类。共享锁
std::shared_mutex
这个类。具体讲解见这里std::shared_mutex
有两种访问级别:
如果一个线程已经获取了共享锁,则其他任何线程都无法获取互斥锁,但是可以获取共享锁。std::shared_lock
和std::unique_lock
这两个模板。前者定义在
,后着定义在
中。--std=c++1z -pthread
;cout
不是线程安全的函数,所以给cout
输出加上了互斥锁。共享锁的代码示例
#include
In unique: 3: 300
In unique: 3: 301
In unique: 3: 302
In shared 1: 300
In shared 2: 300
In shared 1: 301
In shared 2: 301
In shared 1: 302
In shared 2: 302
In unique: 4: 400
In unique: 4: 401
In unique: 4: 402