Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在c++;如何声明二进制信号量? 我试图在C++中声明二进制信号量。 有没有办法通过使用信号量X 您需要包含的标题是什么_C++_Semaphore - Fatal编程技术网

在c++;如何声明二进制信号量? 我试图在C++中声明二进制信号量。 有没有办法通过使用信号量X 您需要包含的标题是什么

在c++;如何声明二进制信号量? 我试图在C++中声明二进制信号量。 有没有办法通过使用信号量X 您需要包含的标题是什么,c++,semaphore,C++,Semaphore,对不起。。。我使用UNIX G++< P> C++语言和标准库没有任何信号量概念,甚至线程。答案完全取决于你在哪个平台上工作;例如,Windows和Linux系统API支持信号量。如果您使用的编译器实现了C++11标准库(至少是线程部分),那么您应该使用std::mutex,或者可能std::recursive\u mutex,std::timed_mutex或标准::递归\u定时\u互斥,这取决于您想要什么功能(如果没有一条语句来指示其他功能,我想您需要std::mutex) 对于较旧的库,您

对不起。。。我使用UNIX G++

< P> C++语言和标准库没有任何信号量概念,甚至线程。答案完全取决于你在哪个平台上工作;例如,Windows和Linux系统API支持信号量。

如果您使用的编译器实现了C++11标准库(至少是线程部分),那么您应该使用
std::mutex
,或者可能
std::recursive\u mutex
std::timed_mutex
标准::递归\u定时\u互斥,这取决于您想要什么功能(如果没有一条语句来指示其他功能,我想您需要
std::mutex


对于较旧的库,您可能希望使用与之相当的
pthreads
。如果需要支持Windows(本机不包括pthreads),可以使用Anthony Williams的包。这有两个优点:第一,它是Posix和类似Posix的系统(例如Linux)的固有特性;第二,尽管它使用的名称略有不同,但基本思想与C++11标准库中的基本思想几乎相同,当您的编译器支持它时,应该很容易更改为它。

因为C++2003将出现一段时间,请看一下
Boost.Thread
。在那里你找不到信号量,但是无论如何你可能要做的事情的级别可能太低了。

< P>自从C++ 20,现在在标准C++中是可能的。有关参考和示例,请参见。编译器支持它:g++11、clang 11、msvc标准库19.28。这仍然只是一份草稿,尽管是最后一份!“二进制信号量”非常类似于互斥,这可能是OP想要的。所以,增强。线程应该很好+1.