0
我可以讓一個sem_t(信號量)對象的值超過1嗎?由於sem_post只增加1.是否有sem_set?如何將POSIX sem_t信號量增加1以上?
我可以讓一個sem_t(信號量)對象的值超過1嗎?由於sem_post只增加1.是否有sem_set?如何將POSIX sem_t信號量增加1以上?
是的,sem_t可以取值大於1.您可以使用sem_init
將信號量初始化爲abitrary值。從this link引述:
要初始化信號量,使用 sem_init():
int sem_init(sem_t *sem, int pshared, unsigned int value);
- sem指向一個信號量對象 初始化
- pshared的是一個標誌 表示是否不是 信號量應與 fork()ed進程共享。 LinuxThreads的不 當前不支持共享 信號燈
- 值是初始值 信號量設定爲
實施例的使用:
sem_init(&sem_name, 0, 10);
我不知道的任何函數,可以通過任意值增加sem_t。
另請參閱此問題,可能的重複:http://stackoverflow.com/questions/3491762/incrementing-the-value-of-posix-semaphores-by-more-than-1 – razlebe 2011-02-25 11:29:29
pshared不會使信號量共享與分叉的孩子。只有當信號量在已經共享的內存中創建時纔有用,在這種情況下,pshared信號量可以與可映射共享內存的任何其他進程共享,而不僅僅是兒童。 – 2011-06-13 19:40:38