2011-04-07 49 views

回答

4

C++語言和標準庫沒有信號燈,甚至線程的任何概念。答案完全取決於你在做什麼平臺;例如,Windows和Linux系統API支持信號量。

+0

不完全正確,因爲C++ 0x有'std :: thread'和'std :: mutex' ... – 2011-04-07 22:20:06

+0

@ChrisDodd:嚴格來說,「會有」。這仍然只是一個草案,儘管是最後一個! – 2011-04-07 22:41:10

1

如果您使用工具(至少的螺紋部)的C++ 11標準庫的編譯器,你會使用std::mutex X;,或可能std::recursive_mutex X;std::timed_mutex X;std::recursive_timed_mutex X;,這取決於你想要什麼樣的能力(缺乏一個聲明,否則表明,我想你想要std::mutex)。

對於較舊的庫,您可能需要使用pthreads等效項。如果你需要支持Windows(本身不包括pthreads),你可以使用Anthony Williams的pthreads-win32包。這有兩個好處:第一,它是Posix和類似Posix的系統(例如Linux)的本地特性,第二,雖然它使用略有不同的名稱,但其基本思想幾乎就像C++ 11標準庫中的內容,它在你的編譯器支持它時應該很容易改變。

2

由於C++ 2003將有一段時間看看Boost.Thread。你不會在那裏找到一個信號量,但是對於你想要做的事情來說,這可能太低了。

+0

「二進制信號量」與互斥量非常相似,這可能是OP想要的。所以Boost.Thread應該沒問題。 +1 – 2011-04-07 23:00:36