導航:首頁 > 網路營銷 > seminitpshared

seminitpshared

發布時間:2020-08-26 17:35:30

1、sem_init函數的返回值是什麼

返回值
sem_init() 成功時返回 0;錯誤時,返回 -1,並把 errno 設置為合適的值。

該函數是system V 信號量版操作中的函數。權
sem_init() 初始化一個定位在 sem 的匿名信號量。value 參數指定信號量的初始值。 pshared 參數指明信號量是由進程內線程共享,還是由進程之間共享。如果 pshared 的值為 0,那麼信號量將被進程內的線程共享,並且應該放置在這個進程的所有線程都可見的地址上(如全局變數,或者堆上動態分配的變數)。
如果 pshared 是非零值,那麼信號量將在進程之間共享,並且應該定位共享內存區域(見 shm_open(3)、mmap(2) 和 shmget(2))。(因為通過 fork(2) 創建的孩子繼承其父親的內存映射,因此它也可以見到這個信號量。所有可以訪問共享內存區域的進程都可以用 sem_post(3)、sem_wait(3) 等等操作信號量。初始化一個已經初始的信號量其結果未定義。

2、sem_init的說明

<

3、sem_t的初始化信號量

它的原型為: extern int sem_init __P ((sem_t *__sem, int __pshared, unsigned int __value));
頭文件為: #include <semaphore.h>
sem為指向信號量結構的一個指針;
pshared不為0時此信號量在進程間共享,否則只能為當前進程的所有線程共享;
value給出了信號量的初始值。
函數sem_post( sem_t *sem )用來增加信號量的值當有線程阻塞在這個信號量上時,調用這個函數會使其中的一個線程不再阻塞,選擇機制同樣是由線程的調度策略決定的。
函數sem_wait( sem_t *sem )被用來阻塞當前線程直到信號量sem的值大於0,解除阻塞後將sem的值減一,表明公共資源經使用後減少。
函數sem_trywait ( sem_t *sem )是函數sem_wait()的非阻塞版本,它直接將信號量sem的值減一。
函數sem_destroy(sem_t *sem)用來釋放信號量sem。

與seminitpshared相關的知識