在c++;如何声明二进制信号量? 我试图在C++中声明二进制信号量。 有没有办法通过使用信号量X 您需要包含的标题是什么
对不起。。。我使用UNIX G++< P> C++语言和标准库没有任何信号量概念,甚至线程。答案完全取决于你在哪个平台上工作;例如,Windows和Linux系统API支持信号量。如果您使用的编译器实现了C++11标准库(至少是线程部分),那么您应该使用在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) 对于较旧的库,您
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.