使用pthread mutex t鎖的例子

2021-06-21 05:10:33 字數 1048 閱讀 4299

linux下為了多執行緒同步,通常用到鎖的概念。

posix下抽象了乙個鎖型別的結構:ptread_mutex_t。通過對該結構的操作,來判斷資源是否可以訪問。顧名思義,加鎖(lock)後,別人就無法開啟,只有當鎖沒有關閉(unlock)的時候才能訪問資源。

它主要用如下5個函式進行操作。

1:pthread_mutex_init(pthread_mutex_t * mutex,const pthread_mutexattr_t *attr);

初始化鎖變數mutex。attr為鎖屬性,null值為預設屬性。

2:pthread_mutex_lock(pthread_mutex_t *mutex);加鎖

3:pthread_mutex_tylock(pthread_mutex_t *mutex);加鎖,但是與2不一樣的是當鎖已經在使用的時候,返回為ebusy,而不是掛起等待。

4:pthread_mutex_unlock(pthread_mutex_t *mutex);釋放鎖

5:pthread_mutex_destroy(pthread_mutex_t *mutex);使用完後釋放

下面經典例子為建立兩個執行緒對sum從1加到100。前面第乙個執行緒從1-49,後面從50-100。主線程讀取最後的加值。為了防止資源競爭,用了pthread_mutex_t 鎖操作。

#include

#include

#include

#include

typedef struct ct_sum

ct_sum;

void * add1(void * cnt)

pthread_mutex_unlock(&(((ct_sum*)cnt)->lock));

pthread_exit(null);

return 0;

}void * add2(void *cnt)

pthread_mutex_unlock(&(((ct_sum*)cnt)->lock));

pthread_exit(null);

return 0;

}int main(void)

互斥鎖pthread mutex t的使用

2011 01 27 10 22 07 分類 linux 標籤 字型大小 大中小訂閱 1.互斥鎖建立 有兩種方法建立互斥鎖,靜態方式和動態方式。posix定義了乙個巨集pthread mutex initializer來靜態初始化互斥鎖,方法如下 pthread mutex t mutex pthr...

互斥鎖pthread mutex t的使用

1.互斥鎖建立 有兩種方法建立互斥鎖,靜態方式和動態方式。posix定義了乙個巨集pthread mutex initializer來靜態初始化互斥鎖,方法如下 pthread mutex t mutex pthread mutex initializer 在linuxthreads實現中,pthr...

互斥鎖pthread mutex t的使用

互斥鎖建立 有兩種方法建立互斥鎖,靜態方式和動態方式。posix定義了乙個巨集pthread mutex initializer來靜態初始化互斥鎖,方法如下 pthread mutex t mutex pthread mutex initializer 在linuxthreads實現中,pthrea...