前些天在 csdn論壇上看到乙個帖子,詢問互斥鎖 (pthread_mutex_t)是否可以用來同步不同程序的執行緒。
當時我的回答是不可以。
其實,更準確的答案是,不一定。
首先,互斥鎖預設的情況下,只能用於程序內部的執行緒的同步。這也是互斥鎖最常見,最標準的用法。
其次,互斥鎖也確實提供了對不用程序的執行緒同步的支援。不過,問題是,在 posix規範裡面,這個支援不是必須的,而是可選的。
巨集_posix_thread_process_shared 可以用來判斷是否支援這種屬性。
下面的**可以用來測試系統是否支援程序共享互斥鎖:
#include pthread_mutex_t mutex;
int main(void)
#ifdef _posix_thread_process_shared
status = pthread_mutexattr_setpshared(&mutex_attr, pthread_process_shared);
if(status != 0)
else
#else
printf(" mutex cannot be shared among processes!!\n");
#endif
status = pthread_mutex_init(&mutex, &mutex_attr);
if(status != 0)
return 0;
}
我分別在 debian 6.0 和 fedora 16下面測試過,都沒有支援程序共享互斥鎖。
假如在某個系統上支援互斥鎖的話,那麼,可以把互斥鎖分配在程序共享的記憶體段上,這樣,不同程序的執行緒就可以訪問這個互斥鎖了。
自定義的互斥量類,可以用於執行緒或程序的同步
ifndef mutex h define mutex h include class cmutex cmutex public void lock while dwresult wait object 0 void unlock private static void debug msg lpct...
python 執行緒的同步與互斥鎖
當多個執行緒幾乎同時修改某乙個共享資料的時候,需要進行同步控制。同步就是協同步調,按預定的先後次序進行執行。執行緒同步能夠保證多個執行緒安全訪問競爭資源,最簡單的同步機制是引入互斥鎖。互斥鎖某個執行緒要更改共享資料時,先將其鎖定,此時資源的狀態為 鎖定 其他執行緒不能更改 直到該執行緒釋放資源,將資...
執行緒同步的方法之互斥鎖
互斥鎖通過鎖機制來實現執行緒間的同步。在同一時刻只允許乙個執行緒執行乙個關鍵部分 互斥鎖函式 函式 功能pthread mutex init 函式 初始化乙個互斥鎖 pthread mutex destroy函式 登出乙個互斥鎖 pthread mutex lock 函式 加鎖,如果不成功,阻塞等待...