Linux平台用C 封裝執行緒讀寫鎖

2021-06-05 11:40:36 字數 1397 閱讀 2186

測試通過。

rwlockimpl.h view plain #ifndef _rwlockimpl_header #define _rwlockimpl_header

#include #include #include #include

using namespace std;

/*讀寫鎖允許當前的多個讀使用者訪問保護資源,但只允許乙個寫讀者訪問保護資源*/

//——class crwlockimpl ;

class cmyrwlock: private crwlockimpl ;

//銷毀讀/寫鎖~cmyrwlock(){};

//獲取讀鎖//如果其它乙個執行緒占有寫鎖,則當前執行緒必須等待寫鎖被釋放,才能對保護資源進行訪問void readlock();

//嘗試獲取乙個讀鎖//如果獲取成功,則立即返回true,否則當另乙個執行緒占有寫鎖,則返回false bool tryreadlock();

//獲取寫鎖//如果乙個或更多執行緒占有讀鎖,則必須等待所有鎖被釋放//如果相同的乙個執行緒已經占有乙個讀鎖或寫鎖,則返回結果不確定void writelock();

//嘗試獲取乙個寫鎖//如果獲取成功,則立即返回true,否則當乙個或更多其它執行緒占有讀鎖,返回false //如果相同的乙個執行緒已經占有乙個讀鎖或寫鎖,則返回結果不確定bool trywritelock();

//釋放乙個讀鎖或寫鎖void unlock();

private:cmyrwlock(const cmyrwlock&);cmyrwlock& operator = (const cmyrwlock&);};

inline void cmyrwlock::readlock()

inline bool cmyrwlock::tryreadlock()

inline void cmyrwlock::writelock()

inline bool cmyrwlock::trywritelock()

inline void cmyrwlock::unlock()

#endif rwlockimpl.cpp view plain #include "rwlockimpl.h"

crwlockimpl::crwlockimpl()

void crwlockimpl::readlockimpl()

void crwlockimpl::writelockimpl()

for (int k = 0; k < 100; ++k)

++g_counter;if (g_counter <= lastcount)

cout<<"the value of g_counter is error."int main(int argc, char* argv)

編譯,執行

執行結果與在win32下用c++實現多執行緒讀寫鎖的相同。

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

在上篇用c 實現了win32平台上的多執行緒互斥鎖,這次寫個linux平台上的,同樣參考了開源專案c sockets的 在此對這些給開源專案做出貢獻的鬥士們表示感謝!下邊分別是互斥鎖類和測試 已經在fedora 13虛擬機器上測試通過。lock.h ifndef lock h define lock...

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

在上篇用c 實現了win32平台上的多執行緒互斥鎖,這次寫個linux平台上的,同樣參考了開源專案c sockets的 在此對這些給開源專案做出貢獻的鬥士們表示感謝!下邊分別是互斥鎖類和測試 已經在fedora 13虛擬機器上測試通過。lock.h cpp view plain copy ifnde...

用C 操作類讀寫WinCE平台Mac位址

前段時間在測試我們觸控螢幕聯網效能的時候,由於屏的mac位址通過登錄檔設定,而pb定製wince核心的時候就有乙個預設值,所以一批下來mac位址都一樣,兩台以上的機器一聯網准出問題,通過登錄檔軟體去修改mac位址太麻煩了,所以做了乙個小的mac位址軟體。以前用vb做了乙個登錄檔操作類 參見我的blo...