一、recursive_mutex class MyClass { public: void Fun1() { // std::lock_guard<mutex> sguard(m_mutex); // 加锁处理共享内存 std::lock_guard<recursive_mutex> sguard ...
分类:
其他好文 时间:
2020-06-27 20:25:35
阅读次数:
70
一、unique_lock 的第二个参数 (1)std::adopt_lockunique_lock对象在构造的时候,不执行mutex::lock()所以必须要把互斥量提前 lock(),该参数与 lock_guard 使用相同 m_mutex1.lock(); // 使用adopt_lock 之前 ...
分类:
其他好文 时间:
2020-06-25 19:20:00
阅读次数:
98
C++11 std::unique_lock与std::lock_guard区别及多线程应用实例 C++11 std::unique_lock与std::lock_guard区别及多线程应用实例 C++11 std::unique_lock与std::lock_guard区别及多线程应用实例 C++ ...
分类:
编程语言 时间:
2019-12-15 21:59:10
阅读次数:
105
背景 C++多线程编程中通常会对共享的数据进行写保护,以防止多线程在对共享数据成员进行读写时造成资源争抢,导致程序出现未定义或异常行为。通常的做法是在修改共享数据成员时进行加锁(mutex)。在使用锁时通常是在对共享数据进行修改之前进行lock操作,在写完之后再进行unlock操作,但经常会出现lo ...
分类:
其他好文 时间:
2019-11-14 09:59:17
阅读次数:
85
https://www.youtube.com/user/BoQianTheProgrammer 视频网址 Unique Lock unique_lock和lock_guard类似,都是mutex的wrapper类,但是前者更加灵活 lock_guard没有unlock方法,unique_lock可 ...
分类:
编程语言 时间:
2019-10-25 18:03:06
阅读次数:
98
C++ 11 thread 基础用法 lock unlock join mutex joinable lock_guard unique_lock condition_variable wait notify_one notify_all asnyc future ... ...
分类:
编程语言 时间:
2019-10-04 09:27:37
阅读次数:
159
#include #include #include #include #include using namespace std; class LogFile { public: LogFile() { f.open("log.txt"); } ~LogFile() { } void shared_... ...
分类:
编程语言 时间:
2019-09-17 12:53:35
阅读次数:
194
一:两个进程间的两个线程通信,相当于进程间通信 二:一个进程中的两个线程间通信 通信方式: 1.互斥锁 mutex; lock_guard (在构造函数里加锁,在析构函数里解锁) unique_lock 自动加锁、解锁 2.读写锁 shared_lock 3.信号量 c++11中未实现,可以自己使用 ...
分类:
编程语言 时间:
2019-04-28 15:46:58
阅读次数:
320
在《C++并发编程实战》这本书中第3章主要将的是多线程之间的数据共享同步问题。在多线程之间需要进行数据同步的主要是条件竞争。 1 std::lock_guard<std::mutex> 在上述代码中使用了std::lock_guard<>模板,使用该模板定义的mutex在栈空间分配空间,在构造函数中 ...
分类:
编程语言 时间:
2018-12-22 18:39:47
阅读次数:
146
多线程 std::lock 当要同时操作2个对象时,就需要同时锁定这2个对象,而不是先锁定一个,然后再锁定另一个。同时锁定多个对象的方法:std::lock(对象1.锁,对象2.锁...) 额外说明:lock_guard\ lock_a(d1.m, std::adopt_lock); 上面这句是为了 ...
分类:
编程语言 时间:
2018-11-01 12:01:21
阅读次数:
1324