c++ - gcc 和 clang 中的 atomic_flag.wait/notify_one 呢?
问题描述
我找不到 std::atomic_flag 的任何新的 c++20 功能(提案 P0995R1)
我查看了 gcc 状态表,但没有发现任何关于它的信息 https://gcc.gnu.org/projects/cxx-status.html
然后我尝试在 gcc 和 clang 编译器上编译下面的代码,但是这个代码只在 gcc 和 clang 的主干分支上编译
#include <atomic>
#include <thread>
int main()
{
std::atomic_flag f;
std::thread t([&]
{
f.wait(false);
std::cout << "gggg" << std::endl;
});
using namespace std::chrono_literals;
std::this_thread::sleep_for(3s);
f.test_and_set();
f.notify_all();
t.join();
std::cout << "Hello World!\n";
}
有人知道此功能的实施状态吗?
解决方案
这种最新的特性在很大程度上取决于编译器。使用 boost::atomic_flag。它是原创的并且独立于编译器/操作系统
推荐阅读
- php - 在 wordpress 的主页上添加简码时更新失败
- api - 是否可以限制我来自 Amadeus API 的请求
- c# - 如何从字符串中获取整数数组
- elasticsearch - Elastic 7.X 根映射定义具有不受支持的参数
- sql - 如何循环遍历一个表并根据另一个表中的数据更新特定列?
- tfs - TFS 构建任务可以从 repo 中签出特定的提交,而不是签出完整的 repo
- elasticsearch - 循环浏览无痛但“未找到字段”的项目
- python - 处理打开不存在文件“unknown_file.txt”并打印消息文件未找到的脚本。给用户
- spss-modeler - 如何在 SPSS Modeler 中选择“Multinominal”和“Bionominal”?
- r - 将列表中的多个数据框转换为它们自己唯一的语料库对象