标签: binary-semaphore

二进制信号量和互斥量之间的区别

二进制信号量和互斥量之间是否存在差异,或它们基本相同?

glossary operating-system mutex semaphore binary-semaphore

787
推荐指数
19
解决办法
56万
查看次数

错误:“std::array<std::counting_semaphore<1>, 4>”的初始值设定项太多

下面的代码片段无法编译。我尝试了不同的初始化程序,但无法编译。

\n
#include <array>\n#include <semaphore>\n\n\nint main()\n{\n    std::array<std::binary_semaphore, 4> semaphores { {0}, {0}, {0}, {0} };\n    auto& [ lock1, lock2, lock3, lock4 ] { semaphores };\n}\n
Run Code Online (Sandbox Code Playgroud)\n

这是错误消息:

\n
#include <array>\n#include <semaphore>\n\n\nint main()\n{\n    std::array<std::binary_semaphore, 4> semaphores { {0}, {0}, {0}, {0} };\n    auto& [ lock1, lock2, lock3, lock4 ] { semaphores };\n}\n
Run Code Online (Sandbox Code Playgroud)\n

难道不能声明一个binary_semaphores 数组吗?正确的语法是什么?

\n

c++ initializer-list stdarray binary-semaphore c++20

2
推荐指数
1
解决办法
115
查看次数

无法在 Visual Studio 2019 和 2022 中使用 std::counting_semaphore

因此,我尝试在 Visual Studio 2019 和 2022 中使用counting_semaphore,但我得到的只是“std 没有成员counting_semaphore”。

在各个组件中添加 clang 11 后,我在 Visual Studio 2019 中进行了尝试,但仍然遇到相同的错误。然后我就想,好吧,它不支持 C++20。所以我想也许这就是它不起作用的原因。

然后我看到Vs2022 Preview支持C++20。所以我安装了它,包括在内,但我仍然无法执行“std::counting_semaphore<5> slot(5);” 正如它所说,std 没有一个名为计数信号量的成员。

我还在 2022 年预览安装程序的各个组件中安装了 clang12,但仍然无法正常工作。

我不确定我做错了什么。

我在网上看到例子:

https://www.modernnescpp.com/index.php/semaphores-in-c-20 https://en.cppreference.com/w/cpp/thread/counting_semaphore

告诉如何使用它,但是当我将代码放入 vs 中时,它不起作用。

我可以在#include 上“查看代码”,它显示了counting_semaphore 的实现,但我无法使用它!

请有人澄清我做错了什么!

在此输入图像描述

在此输入图像描述

在此输入图像描述

c++ semaphore visual-studio binary-semaphore

1
推荐指数
1
解决办法
3740
查看次数