測試通過。
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...