非同步互斥鎖

2021-09-02 16:40:18 字數 830 閱讀 2773

什麼情況下需要用到鎖呢,就是多執行緒在使用同乙個資源(變數),比如,在類a中有乙個變數int i,a建立了3個執行緒,i作為變數傳遞給了這3個執行緒,每個執行緒都需要對這i進行修改,那麼在使用 i 的時候,這3個執行緒都需要進行鎖操作。

第一步 宣告純虛類:

class lock

/*** 加鎖

*/virtual void acquire() = 0;

/*** 嘗試加鎖

* @return 加鎖成功則返回true, 否則返回false

*/virtual bool tryacquire() = 0;

/*** 解鎖

*/virtual void release() = 0;

};第二步 宣告 鎖類,繼承純虛類

class mutex : public lock;

實現:mutex::mutex()

rc = pthread_mutexattr_settype(&attr, pthread_mutex_errorcheck);

if (rc)

rc = pthread_mutex_init(&_mutex, &attr);

if (rc)

rc = pthread_mutexattr_destroy(&attr);

if(rc != 0)

}mutex::~mutex()

}void mutex::acquire()

}bool mutex::tryacquire()

return rc == 0;

}void mutex::release()

}

互斥鎖機制,互斥鎖與讀寫鎖區別

互斥鎖 mutex,用於保證在任何時刻,都只能有乙個執行緒訪問該物件。當獲取鎖操作失敗時,執行緒會進入睡眠,等待鎖釋放時被喚醒 讀寫鎖 rwlock,分為讀鎖和寫鎖。處於讀操作時,可以允許多個執行緒同時獲得讀操作。但是同一時刻只能有乙個執行緒可以獲得寫鎖。其它獲取寫鎖失敗的執行緒都會進入睡眠狀態,直...

鎖 互斥鎖,死鎖

當多個執行緒幾乎同時修改某乙個共享資料的時候,需要進行同步控制 執行緒同步能夠保證多個執行緒安全訪問競爭資源,最簡單的同步機制是引入互斥鎖。互斥鎖為資源引入乙個狀態 鎖定 非鎖定 某個執行緒要更改共享資料時,先將其鎖定,此時資源的狀態為 鎖定 其他執行緒不能更改 直到該執行緒釋放資源,將資源的狀態變...

執行緒 互斥鎖

include include include include include 1.靜態初始化,當動態初始化時,遮蔽靜態初始化 pthread mutex t mutex pthread mutex initializer 2.動態初始化 pthread mutex t mutex int lock...