dispatch_semaphore只有三個(gè)方法:
//創(chuàng)建信號(hào)量
dispatch_semaphore_create
//發(fā)送信號(hào)量
dispatch_semaphore_signal
//等待信號(hào)量
dispatch_semaphore_wait
執(zhí)行dispatch_semaphore_create 會(huì)根據(jù)傳入的long型參數(shù)創(chuàng)建對(duì)應(yīng)數(shù)目的信號(hào)量喷面;執(zhí)行 dispatch_semaphore_signal 會(huì)增加一個(gè)信號(hào)量;執(zhí)行dispatch_semaphore_wait 則會(huì)減少一個(gè)信號(hào)量,如果信號(hào)量是0走孽,就會(huì)根據(jù)傳入的等待時(shí)間來等待惧辈。
例如:
dispatch_semaphore_create(1) 創(chuàng)建一個(gè) semaphore 信號(hào)總量為 1
dispatch_semaphore_wait(lock, DISPATCH_TIME_FOREVER) 如果信號(hào)總量為0,進(jìn)入等待狀態(tài); 信號(hào)量大于0時(shí)磕瓷,繼續(xù)執(zhí)行代碼盒齿,同時(shí)將信號(hào)總量 -1
dispatch_semaphore_signal(lock); 發(fā)送信號(hào)量念逞,信號(hào)量 +1
這樣一解釋,不知道你有沒有醍醐灌頂边翁。
參考:http://www.reibang.com/p/c194ca08776c
http://www.reibang.com/p/098328f17ff6