std::atomic<bool>使用例子
时间: 2023-08-08 20:06:18 浏览: 178
利用C++11原子量如何实现自旋锁详解
以下是一个使用std::atomic<bool>的例子:
```
#include <iostream>
#include <thread>
#include <atomic>
std::atomic<bool> flag(false); // 全局的std::atomic<bool>变量
void thread_func()
{
while (!flag.load()) // 检测flag的状态
{
// do something
}
std::cout << "thread_func exits." << std::endl;
}
int main()
{
std::thread t(thread_func); // 创建一个新线程
// do something
flag.store(true); // 线程退出时设置flag的状态
t.join(); // 等待子线程退出
std::cout << "main exits." << std::endl;
return 0;
}
```
在上面的例子中,我们创建了一个全局的std::atomic<bool>变量flag,并在主线程中设置了它的状态为true。在子线程中,我们不断地检测flag的状态,直到它的状态被设置为true,此时子线程会退出。通过使用std::atomic<bool>,我们可以保证在多线程环境下对flag变量的操作是原子的。
阅读全文