Linux下多執行緒的執行緒保護

2021-09-29 03:19:20 字數 1270 閱讀 2606

目錄

一 開發環境

二 互斥鎖

系統:ubuntu16.04

執行緒庫:pthread

語言:c/c++

linux下的執行緒保護,最常用的是互斥鎖、條件變數、訊號量和讀寫鎖。

先來試一下互斥鎖吧

多執行緒之間可能需要互斥的訪問一些全域性變數,這就需要互斥的來訪問,這些需要共享訪問的字段被稱作是臨界資源,訪問臨界資源的程式段稱作是臨界區

實現執行緒間的互斥與同步機制的是鎖機制,下面是常用的鎖機制的函式和類。

pthread_mutex_t mutex鎖物件

pthread_mutex_init(&mutex,null)在主線程中初始化鎖為解鎖狀態

pthread_mutex_t mutex = pthread_mutex_initializer編譯時初始化鎖為解鎖狀態

pthread_mutex_lock(&mutex)(阻塞加鎖)訪問臨界區加鎖操作

pthread_mutex_trylock( &mutex)(非阻塞加鎖); pthread_mutex_lock() 類似,不同的是在鎖已經被佔據時返回 ebusy 而不是掛起等待。

pthread_mutex_unlock(&mutex):訪問臨界區解鎖操作

示例**: 

#include #include #include #include int num = 0;

void thread_num(void);

pthread_mutex_t mutex = pthread_mutex_initializer;

int main()

void thread_num(void)

num++;

printf("%u:num=%d\n",pthread_self(),num);

if(pthread_mutex_unlock(&mutex) != 0)

sleep(1);

}}

執行結果:

自用 linux下多執行緒

3 簡單的多執行緒示例 乙個簡單的linux多執行緒示例如下 include include include include void thread function void arg char message hello world int main printf waiting for thre...

linux下多執行緒程式設計

先看執行的結果 1 主函式正在建立執行緒,2執行緒1被建立 3 thread1 i m thread 1th 4執行緒2被建立 5 thread2 i m thread 2nd 6 thread2 number 0 7執行緒3被建立 8主函式正在等待執行緒結束.9 thread1 number 0 ...

linux下的多執行緒學習

下面先來乙個例項來感受下linux下c語言多執行緒程式設計的樂趣!我們通過建立兩個執行緒來實現對乙個數的遞加。先不去理會 的含義,我們先執行linux,在其中編寫我們的第乙個c語言多執行緒程式。include include include include include define max 10...