程序間互斥 Mutex

2021-06-19 03:59:41 字數 851 閱讀 7775

對於普通的執行緒間互斥可以使用createmutex傳建乙個匿名的互斥量做互斥,對程序間的互斥就要用到命名互斥量來做互斥了。用到的函式有:

1. 建立乙個命名互斥量使用createmutex()方法,只需把lpname引數設定為非null,如"my mutex"

handle winapi createmutex(

__in lpsecurity_attributes lpmutexattributes,

__in bool binitialowner,

__in lpctstr lpname );

2. 開啟乙個命名互斥量使用openmutex()方法,我們也需要對其中的lpname引數指定內容,如"my mutex"

handle winapi openmutex(

__in dword dwdesiredaccess,

__in bool binherithandle,

__in lpctstr lpname );

下面給出兩段**,可以同時使用兩個process1或process1和process2檢視執行效果

程序1的**:

#include #include using namespace std;

int main()

else

for(int i = 0;i<10; i++)

else

}if(wait_abandoned == d)

if(wait_failed ==d)

sleep(2000);

}closehandle(hmutex);

return 0;

}

Linux執行緒間同步 互斥鎖Mutex

程序間通訊往往意味著系統呼叫,核心態,使用者態的切換,其代價是不容忽視的。而執行緒是程序中的具體執行流,乙個程序中多個執行緒共享程序的資源,包含程序的虛擬位址空間,程序開啟的檔案描述符,程序組id等。而執行緒間的通訊和同步由於處於同一位址空間下,也更加輕易和輕量級。多執行緒之間訪問共享變數時,這些共...

Windows程序間互斥鎖

windows的互斥鎖mutex是可以在程序間使用的。createmutex時可以指定乙個mutex名稱,此名稱可以被其他程序或執行緒使用。createmutex的第二個引數bool binitialowner表示在建立後是不是立刻獲取此鎖,相當於立即waitforsingleobject。open...

執行緒同步與互斥 互斥鎖(mutex)

在多執行緒訪問共享資料的時候可能會發生衝突,例如 衝突的例子 include include include includeint common data 0 公共資料 void increase data void vptr return null int main void err pthrea...