1. 程式人生 > >oc GCD 訊號量

oc GCD 訊號量

訊號量是一個整形值並且具有一個初始計數值,並且支援兩個操作:訊號通知和等待。當一個訊號量被訊號通知,其計數會被增加。當一個執行緒在一個訊號量上等待時,執行緒會被阻塞,直至計數器大於零,然後執行緒會減少這個計數。

dispatch_semaphore_t m_semaphore;

m_semaphore =dispatch_semaphore_create(0);  ///0 

voidDatabaseMgr::SyncExecute(dispatch_block_t block) //dispatch_async發一個同步任務

{

dispatch_async(m_dbQueue, ^{

        block();

dispatch_semaphore_signal(m_semaphore); ///1

    });

dispatch_semaphore_wait(m_semaphore,DISPATCH_TIME_FOREVER);///1->0

}