09 2023 档案
摘要:## 1、标准原子类型 标准原子类型的定义位于头文件``内。原子操作的关键用途是取代需要互斥的同步方式,但假设原子操作本身也在内部使用了互斥,就很可能无法达到期望的性能提升。有三种方法来判断一个原子类型是否属于无锁数据结构: - 所有标准原子类型(`std::atomic_flag`除外,因为它必须
阅读全文
摘要:## 1、条件变量 当线程需要等待特定事件发生、或是某个条件成立时,可以使用条件变量`std::condition_variable`,它在标准库头文件``内声明。 ```c++ std::mutex mut; std::queue data_queue; std::condition_variab
阅读全文
摘要:## 1、使用互斥量 在C++中,我们通过构造`std::mutex`的实例来创建互斥量,调用成员函数`lock()`对其加锁,调用`unlock()`解锁。但通常更推荐的做法是使用标准库提供的类模板`std::lock_guard`,它针对互斥量实现了RAII手法:在构造时给互斥量加锁,析构时解锁
阅读全文
摘要:## 1、线程的基本管控 包含头文件``后,通过构建`std::thread`对象启动线程,任何可调用类型都适用于`std::thread`。 ```c++ void do_some_work(); struct BackgroundTask { void operator()() const; }
阅读全文