首先探索dispatch_suspend 适用范围截取官方文档一句话
The dispatch queue or dispatch source to suspend. (You cannot suspend other types of dispatch objects.) This parameter cannot be NULL
.
意思就是dispatch_suspend(我只支持挂起队列和源对象)不支持其它dispatch objects。
所以dispatch_suspend(挂起对象) “挂起对象”只能是dispatch_queue_t dispatch_source_t
说到dispatch_queue_t对象
队列有4种 第一种主队列 主队列如果用dispatch_suspend() 我只能说是在找死,除非你dispatch_suspend()与dispatch_resume()紧挨一起用
第二种是dispatch_get_global_queue队列我们先用一段代码来测试dispatch_suspend()是否对全局队列起作用
-(void)susQueue{
dispatch_queue_t queueGlobal=dispatch_get_global_queue(0, 0);
//dispatch_queue_t queueSe=dispatch_queue_create("com.serial", DISPATCH_QUEUE_SERIAL);
//dispatch_queue_t queueCo=dispatch_queue_create("com.CONCURRENT", DISPATCH_QUEUE_CONCURRENT);
dispatch_async(queueGlobal, ^{
NSLog(@"1-- %@",[NSThread currentThread]);
});
dispatch_async(queueGlobal, ^{
NSLog(@"2-- %@",[NSThread currentThread]);
});
dispatch_async(queueGlobal, ^{
NSLog(@"3-- %@",[NSThread currentThread]);
});
dispatch_async(queueGlobal, ^{
NSLog(@"4-- %@",[NSThread currentThread]);
});
dispatch_suspend(queueGlobal);//