在上篇用c++實現了win32平台上的多執行緒互斥鎖,這次寫個linux平台上的,同樣參考了開源專案c++ sockets的**,在此對這些給開源專案做出貢獻的鬥士們表示感謝!
下邊分別是互斥鎖類和測試**,已經在fedora 13虛擬機器上測試通過。
lock.h
#ifndef _lock_h
#define _lock_h
#include //鎖介面類
class ilock
virtual void lock() const = 0;
virtual void unlock() const = 0;
};//互斥鎖類
class cmutex : public ilock
;//鎖
class cmylock
;#endif
lock.cpp
#include "lock.h"
//動態方式初始化互斥鎖
cmutex::cmutex()
//登出互斥鎖
cmutex::~cmutex()
//確保擁有互斥鎖的執行緒對被保護資源的獨自訪問
void cmutex::lock() const
//釋放當前執行緒擁有的鎖,以使其它執行緒可以擁有互斥鎖,對被保護資源進行訪問
void cmutex::unlock() const
//利用c++特性,進行自動加鎖
cmylock::cmylock(const ilock& m) : m_lock(m)
//利用c++特性,進行自動解鎖
cmylock::~cmylock()
測試**
// pthread_mutex.cpp : 定義控制台應用程式的入口點。
//#include #include #include "lock.h"
using namespace std;
//建立乙個互斥鎖
cmutex g_lock;
//執行緒函式
void * startthread(void *pparam)
//對被保護資源(以下列印語句)自動加鎖
//執行緒函式結束前,自動解鎖
cmylock lock(g_lock);
for( int i = 0; i < 5; i++ )
return (void *)0;
}int main(int argc, char* argv)
編譯成功後,執行程式
同樣,若將下邊**注釋掉,重新編譯
//cmylock lock(g_lock);
執行程式
結果顯而易見。
Linux平台上用C 實現多執行緒互斥鎖
在上篇用c 實現了win32平台上的多執行緒互斥鎖,這次寫個linux平台上的,同樣參考了開源專案c sockets的 在此對這些給開源專案做出貢獻的鬥士們表示感謝!下邊分別是互斥鎖類和測試 已經在fedora 13虛擬機器上測試通過。lock.h cpp view plain copy ifnde...
用C 實現多執行緒Mutex鎖
準備知識 1,核心物件互斥體 mutex 的工作機理,waitforsingleobject函式的用法,這些可以從msdn獲取詳情 2,當兩個或更多執行緒需要同時訪問乙個共享資源時,系統需要使用同步機制來確保一次只有乙個執行緒使用該資源。mutex 是同步基元,它只向乙個執行緒授予對共享資源的獨佔訪...
Linux平台用C 封裝執行緒讀寫鎖
測試通過。rwlockimpl.h view plain ifndef rwlockimpl header define rwlockimpl header include include include include using namespace std 讀寫鎖允許當前的多個讀使用者訪問保護資...