dispatch_semaphore_create创建一个semaphore
dispatch_semaphore_signal发送一个信号
dispatch_semaphore_wait等待信号
实际应用
dispatch_semaphore_t sema = dispatch_semaphore_create(5);
for(100次循环操作) {
//信号量为0时一直等待
dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);
//分线程执行
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0), ^{
dispatch_semaphore_signal(sema);// 操作,信号量+1
});
}
网友评论