C++學習:第六章Linux高階程式設計 - (十三)執行緒的訊號量、鎖、私有資料
回顧:
執行緒與程式
1. 程式由於資源獨立,程式的主要關注是解決資源共享
2. 執行緒先天是資料共享,執行緒主要關注共享資料髒
1.互斥量(執行緒內)
讀寫鎖
3. 訊號/條件量排程(執行緒之間)
訊號量
一、 執行緒的訊號量
- 定義訊號量 sem_t
- 初始化訊號量 sem_init
- 操作訊號量 sem_post sem_wait
- 釋放訊號量 sem_destroy
- 其他函式 sem_getvalue 用來測試訊號量的值
int sem_getvalue(sem_t *sem,int *valp)
引數:sem為訊號燈指標,valp為訊號燈的值
返回值:成功時,返回0,失敗,-1
案例:
建立一個子執行緒
子執行緒-訊號量(阻塞)
主執行緒+訊號量(解除阻塞)
體會:
訊號量可以累加
+-操作單位是1
#include <pthread.h>
#include <semaphore.h>
#include <stdio.h>
sem_t sem;//
void *run(void*d)
{
while(1)
{
//3.
sem_wait(&sem);
printf("解除\n");
}
}
main()
{
pthread_t tid;
//2
sem_init(&sem,0,5);
pthread_create(&tid,0,run,0);
while(1)
{
//
sleep(1);
sem_post(&sem);
}
}
作業:
搖獎程式,繼續暫停7位隨機數
訊號量/條件量/訊號?
目的:選擇哪種技術實現?
- 無法使用互斥與讀寫鎖實現.
- 訊號實現不穩定.
- 沒有互斥建議不考慮條件量.
- 最佳選擇訊號燈.
二、執行緒的讀寫鎖(自學)
pthread_rwlock_t;
pthread_rwlock_init;
pthread_rwlock_destroy;
pthread_rwlock_rdlock;
pthread_rwlock_wrlock;
pthread_rwlock_unlock;
讀讀相容
寫寫互斥
讀寫互斥
作用主要是為IO(檔案)操作設計.
三、 執行緒私有資料(瞭解)
pthread_key_create
pthread_key_delete
相關文章
- Linux C++ 多執行緒程式設計LinuxC++執行緒程式設計
- JavaSE高階程式設計之多執行緒Java程式設計執行緒
- 物聯網學習教程—— 執行緒私有資料執行緒
- 好程式設計師分享大資料教程之執行緒高階部分程式設計師大資料執行緒
- 多執行緒程式設計進階——Java類庫中的鎖執行緒程式設計Java
- Linux C/C++程式設計中的多執行緒程式設計基本概念LinuxC++程式設計執行緒
- JUC執行緒高階---執行緒控制通訊Condition執行緒
- 圖解程式執行緒、互斥鎖與訊號量-看完不懂你來打我圖解執行緒
- 程式間通訊(linux程式與執行緒學習筆記)Linux執行緒筆記
- 大資料之執行緒高階部分大資料執行緒
- 多執行緒合集(一)---訊號量,鎖,以及併發程式設計,自定義任務排程和awaiter執行緒程式設計AI
- Linux程式執行緒學習筆記Linux執行緒筆記
- 好程式設計師大資料學習路線分享大資料之執行緒程式設計師大資料執行緒
- JS高階程式設計第十三章.個人學習筆記JS程式設計筆記
- Java多執行緒—執行緒同步(單訊號量互斥)Java執行緒
- 6.JUC執行緒高階-Lock同步鎖執行緒
- 好程式設計師大資料學習路線分享執行緒學習筆記二程式設計師大資料執行緒筆記
- 好程式設計師大資料學習路線分享多執行緒學習筆記程式設計師大資料執行緒筆記
- 多執行緒併發程式設計“鎖”事執行緒程式設計
- Java多執行緒程式設計—鎖優化Java執行緒程式設計優化
- C++多執行緒學習C++執行緒
- 高併發程式設計系列:4種Java執行緒鎖全面詳解程式設計Java執行緒
- java-多執行緒-CountDownLatch(閉鎖) CyclicBarrier(柵欄) Semaphore(訊號量)-Java執行緒CountDownLatch
- 利用訊號量實現執行緒順序執行執行緒
- C++高階程式設計pdfC++程式設計
- c++多執行緒程式設計:C2672C++執行緒程式設計
- Java多執行緒學習——執行緒通訊Java執行緒
- Java併發程式設計之執行緒安全、執行緒通訊Java程式設計執行緒
- 執行緒同步(windows平臺):訊號量執行緒Windows
- 高質量C/C++程式設計指南總結(八)—— C++高階特性C++程式設計
- Python執行緒專題5:訊號量與有邊界的訊號量Python執行緒
- Rust 程式設計視訊教程(進階)——016_2 建立執行緒與等待執行緒結束Rust程式設計執行緒
- 多執行緒Demo學習(執行緒的同步,簡單的執行緒通訊)執行緒
- 【linux】系統程式設計-6-POSIX標準下的訊號量與互斥鎖Linux程式設計
- 【linux】系統程式設計-5-執行緒Linux程式設計執行緒
- Java併發程式設計學習筆記----執行緒池Java程式設計筆記執行緒
- Javascript高階程式設計 學習筆記JavaScript程式設計筆記
- Linux應用程式獲取執行緒棧的資訊Linux執行緒