C++的atomic_bool
时间: 2023-09-13 13:13:08 浏览: 156
`std::atomic_bool`是C++标准库中提供的原子布尔类型。在多线程编程中,原子类型用于确保对变量的操作是原子的,即在多线程环境下保证操作的完整性和一致性。
`std::atomic_bool`可以用来创建原子的布尔变量,支持原子的读取、写入和比较交换等操作,保证多线程中对该变量的操作的原子性。
以下是一个示例:
```cpp
#include <iostream>
#include <atomic>
#include <thread>
std::atomic_bool flag(false);
void worker()
{
while (!flag.load(std::memory_order_acquire))
{
// 做一些工作
}
std::cout << "Worker thread exiting" << std::endl;
}
int main()
{
std::thread t(worker);
// 模拟一些工作
std::this_thread::sleep_for(std::chrono::seconds(2));
// 设置标志位为true
flag.store(true, std::memory_order_release);
t.join();
return 0;
}
```
在上面的示例中,`std::atomic_bool`类型的变量`flag`被用作一个标志位,用于控制线程的执行。在主线程中,我们将`flag`设置为`true`,从而使得工作线程能够退出循环并结束执行。
需要注意的是,在多线程编程中,使用原子类型能够避免数据竞争和不确定的行为。但是,仍然需要谨慎设计和使用多线程代码,以确保正确性和性能。
阅读全文