互斥鎖可以用於不同程序的執行緒同步嗎?

2021-06-04 02:14:52 字數 896 閱讀 1416

前些天在 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 函式 加鎖,如果不成功,阻塞等待...