linux執行緒筆記9

2021-07-25 21:46:55 字數 998 閱讀 7492

訊號量從本質上是乙個非負整數計數器,是共享資源的數目,通常被用來控制對共享資源的訪問。

訊號量可以實現執行緒的同步和互斥

通過sem_post()和wem_wait()函式對訊號量進行加減操作從而解決執行緒的同步和互斥。

sem_t

#include int sem_init(sem_t *sem,int pshared,unsigned value);

int sem_destroy(sem_t *sem)

返回值:成功返回0,失敗返回錯誤編號

引數: sem:訊號量指標

pshared:是否在程序間共享的標誌,0為不共享,1為共享

value:訊號量的初始值

#include int sem_post(sem_t *sem);//增加訊號量的值

int sem_wait(sem_t *sem);//減少訊號量的值

int sem_trywait(sem_t *sem);//sem_wait()的非阻塞版本

返回值:成功返回0,出錯返回錯誤編號

呼叫sem_post()一次訊號量加1操作

呼叫sem_wait()一次訊號量減1操作

當執行緒呼叫sem_wait()後,若訊號量的值小於0則執行緒阻塞。只有其他執行緒在呼叫sem_post對訊號量作加操作後並且其值大於或者等於0時,阻塞的執行緒才能繼續執行

啟動三個子執行緒,通過執行緒訊號量控制子執行緒的執行順序 c->b->a

#include #include #include #include //定義兩個執行緒訊號量

sem_t sem1;

sem_t sem2;

void *a_fn(void *arg)

void *b_fn(void *arg)

void *c_fn(void *arg)

int main(void)

9 Linux多執行緒

linux系統下的多執行緒遵循posix執行緒介面,稱為pthread。編寫linux下的多執行緒程式,需要使用標頭檔案pthread.h,連線時需要使用庫libpthread.a。gcc lpthread helloworld.c o helloworld include int pthread ...

Linux學習筆記 9

root localhost mount 查詢系統中已經掛載的裝置 執行效果 root localhost mount dev sda5 on type ext4 rw proc on proc type proc rw sysfs on sys type sysfs rw devpts on de...

Linux學習筆記9

1 linux檔案屬性中各個列的含義 ls lhi的結果 139170 rw r r 1 root root 22 mar 11 15 17 oldboy.txt 從左往右 139170 inode號碼,家庭住址 檔案型別 rw r r 許可權 1 硬鏈結數 root 屬主 所有者 root 屬組 ...