對於普通的執行緒間互斥可以使用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...