2013-01-16 27 views
1

我嘗試初始化一個互斥體(VS 2008/Windows XP SP2的),但每次我跑我的應用程序,該行:互斥的Windows XP提供了0xC0000096:特權指令異常

pthread_mutex_init(&mutex, NULL); 

給了我以下錯誤:

0xC0000096: Privileged instruction. 

我宣佈我用互斥:

static pthread_mutex_t mutex; 

我試着不叫調用pthread_mutex_init聲明米Ÿ互斥,如:

static pthread_mutex_t mutex= PTHREAD_MUTEX_INITIALIZER; 

pthread_mutex_lock(&mutex); 

崩潰與0xC0000096:特權指令錯誤。

我在做什麼錯?

回答

0

在Windows上,您必須使用CreateMutex API來初始化互斥對象。
或者您可以使用新的C++ mutex類,前提是您的編譯器支持它。

+0

我使用了Windows API,但我需要爲我的應用程序做一個版本的Linux版本,以及一個用於Windows的版本。如果我解決'特權指令錯誤'我會發布它,但現在Windows API是避免這個問題的最好方法。 – Aphelion

+0

您可以使用可在Windows和Linux中工作的C++ 11'mutex'類。 – Superman

+0

我不確定在VS2008中是否支持C++ 11。 – Aphelion