linux之mutex 互斥鎖

2021-07-28 09:38:56 字數 769 閱讀 3216

在posix thread中定義有一套專門用於執行緒同步的mutex函式

有兩種方法建立互斥鎖,靜態方式和動態方式。posix定義了乙個巨集pthread_mutex_initializer來靜態初始化互斥鎖,方法如下: pthread_mutex_t mutex=pthread_mutex_initializer; 在linuxthreads實現中,pthread_mutex_t是乙個結構,而pthread_mutex_initializer則是乙個結構常量。

動態方式是採用pthread_mutex_init()函式來初始化互斥鎖,api定義如下: int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *mutexattr) 其中mutexattr用於指定互斥鎖屬性(見下),如果為null則使用預設屬性。

pthread_mutex_destroy ()用於登出乙個互斥鎖,api定義如下: int pthread_mutex_destroy(pthread_mutex_t *mutex) 銷毀乙個互斥鎖即意味著釋放它所占用的資源,且要求鎖當前處於開放狀態。由於在linux中,互斥鎖並不占用任何資源,因此linuxthreads中的 pthread_mutex_destroy()除了檢查鎖狀態以外(鎖定狀態則返回ebusy)沒有其他動作。

互斥鎖的屬性在建立鎖的時候指定,在linuxthreads實現中僅有乙個鎖型別屬性,不同的鎖型別在試圖對乙個已經被鎖定的互斥鎖加鎖時表現不同。當前(glibc2.2.3,linuxthreads0.9)有四個值可供選擇&

Linux驅動 互斥鎖mutex測試

linux驅動 互斥鎖mutex測試 環境 主機 fedora12 目標板 mini6410 目標板linux核心版本 2.6.38 互斥鎖主要函式 建立互斥鎖 define mutex mutexname 加鎖,如果加鎖不成功,會阻塞當前程序 void mutex lock struct mute...

Linux驅動 互斥鎖mutex測試

linux驅動 互斥鎖mutex測試 環境 主機 fedora12 目標板 mini6410 目標板linux核心版本 2.6.38 互斥鎖主要函式 建立互斥鎖 define mutex mutexname 加鎖,如果加鎖不成功,會阻塞當前程序 void mutex lock struct mute...

Windows執行緒同步之互斥鎖(Mutex)

執行緒同步的方式和機制 臨界區 互斥區 事件 訊號量四種方式 臨界區 critical section 互斥量 mutex 訊號量 semaphore 事件 event 的區別 1 臨界區 通過對多執行緒的序列化來訪問公共資源或一段 速度快,適合控制資料訪問。在任意時刻只允許乙個執行緒對共享資源進行...