2010-05-17 117 views

回答

4

這是隻適用於Vista和了一個API函數。我猜你是在XP上運行這個代碼。

爲了避免意外使用僅在更高版本的Windows提供的API函數,你要定義_WIN32_WINNT宏:

#define _WIN32_WINNT 0x502 // Designed to run on Windows XP SP2 and up 
#include <windows.h> 

如果不設置它,然後它通常默認爲0x600在更高版本的Windows SDK上,選擇Vista作爲目標操作系統。順便說一句,你可能不得不放棄條件變量。您的問題中沒有足夠的細節來提供合適的替換。代替使用互斥體的代碼不應該很難找到。

2

InitializeConditionVariable和相關的條件變量API僅在Windows Vista之後可用。您可以使用Boost.Thread來提供一個適用於Windows XP的條件變量實現。我寫了一個article on my blog關於如何將它用於生產者/消費者隊列。

相關問題