什麽是Linux編程?Linux編程培訓哪個好?
線程的信號量主要就是實現對公共資源的一種控制管理。當公共資源增加時,信號量的值增加;當公共資源減少時,信號量的值減少;只有信號量的值大於0時,才能訪問信號量所代表的公共資源。其實功能和之前的ucos的信號量功能類似。
1 線程信號量初始化sem_init
int sem_init(sem_t *sem, int pshared, unsigned int value);
功能介紹:
該函數主要的功能是創建一個信號量,設置該信號量的值,並且設置信號量的使用範圍。信號量創建成功後,可以對其進行加減操作。
參數說明:
第一個參數sem是一個指向信號量結構的指針,當信號量初始化成功後,可以的這個信號量指針進行加減操作;第二個參數表示信號量的共享屬性,當其值不為0時,信號量可以在進程間共享,如果等於0,則只能在同一個進程中的多個線程間共享;第三個參數用於設置信號量初始化時候的值。
2 線程信號量增加函數sem_post
int sem_post(sem_t *sem);
功能介紹:
該函數用於增加信號量的值,每次增加值為1。當有線程在等待該信號量,則等待信號量返回,不增加信號量的值。
參數說明:sem參數是初始化時候創建的信號量結構體,用於記錄信號量值得參數。
3 線程信號量減少函數sem_wait
int sem_wait(sem_t *sem);
功能介紹:
該函數用於減少信號量的值,每次減少值為1。當信號量的值為0,則線程會阻塞一直等待信號量的值大於0為止,當值為0時,不在減少。
參數說明:
sem參數是初始化時候創建的信號量結構體。
4 線程信號量的銷毀函數sem_destroy
int sem_destroy(sem_t *sem);
功能介紹:
函數用於釋放創建的信號量。
參數說明:
sem參數是初始化時候創建的信號量結構體。
使用線程的信號量進行通信,可以有效的對線程資源進行合理的分配,同時可以使線程以一個合理的方式進行調度。下面的代碼是一個小小的實例,用很常規的方法來使用信號量,當線程獲得獲得信號量之後,在處理完相應的操作之後會主動的釋放掉信號量。其實可以根據信號量的wait和post自己設計使用信號量。不過需要註意的是在wait和post函數分開使用時,可能會因為線程優先級等問題,post和wait被調用的次數不是對等的,這時候這時候可能出現的問題是不可控的,在這種方式設計程序時,需要把大部分的情況考慮進去,當然可能出現的情況的種數也是從0到1質變,從1到n量變得過程。
什麽是Linux編程?Linux編程培訓哪個好?