GCD可以设置线程最大并发量


-(void)dispatchSignal{

     //crate的value表示,最多几个资源可访问
     dispatch_semaphore_t semaphore = dispatch_semaphore_create(2);   
     dispatch_queue_t quene = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
     
     //任务1
     dispatch_async(quene, ^{
         dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);
         NSLog (@ "run task 1" );
         sleep(1);
         NSLog (@ "complete task 1" );
         dispatch_semaphore_signal(semaphore);       
     });<br>
     //任务2
     dispatch_async(quene, ^{
         dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);
         NSLog (@ "run task 2" );
         sleep(1);
         NSLog (@ "complete task 2" );
         dispatch_semaphore_signal(semaphore);       
     });<br>
     //任务3
     dispatch_async(quene, ^{
         dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);
         NSLog (@ "run task 3" );
         sleep(1);
         NSLog (@ "complete task 3" );
         dispatch_semaphore_signal(semaphore);       
     });   
}


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM