Linux平台上用C 實現多執行緒互斥鎖

2021-06-02 12:52:07 字數 1404 閱讀 7183

在上篇用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 讀寫鎖允許當前的多個讀使用者訪問保護資...