- dispatch semaphore
1.dispatch semaphore是持有计数的信号,该计数是多线程编程中的计数类型信号。计数为0时等待,计数为1或大于1时,减去1而不等待。
2.dispatch_semaphore_wait函数等待dispatch semaphore的计数值大于或等于1,当计数值大于等于1,或者等待中计数值大于等于1时,对该计数进行减法并从dispatch_semaphore_wait函数返回。
3.dispatch_semaphore_wait函数的返回值也与dispat
ch_group_wait函数相同。
dispatch_time_t time;//定义dispatch_time_t;
long result = dispatch_semaphore_wait(semaphore,time);
if(result == 0){
//在time定义的待机等待时间中如果计数值大于或者等于1,则返回0,可执行需要进行排他控制的任务。任务结束通过dispatch_semaphore_signal函数将dispatch semaphore的计数值加1.
}else{
//计数值为0,因此在等待指定时间后返回非0;
}
- dispatch_once
diapatch_once函数是保证在应用程序执行中只执行一次指定的api。
static dispatch_once_t token;
dispatch_once(&token,^{
});
这个函数比用控制变量控制更可靠。
网友评论