// 不管是串行队列(SerialQueue)还是并发队列(ConcurrentQueue),都是FIFO队列。也就意味着,任务一定是一个一个地,按照先进先出的顺序来执行。 // 串行队列:在创建队列时,传参数DISPATCH_QUEUE_SERIAL表示创建串行队列。任务会一个一个地执行,只有前一个任务执行完成,才会继续执行下一个任务。串行执行并不是同步执行...
let queue = dispatch_queue_create("myQueue", DISPATCH_QUEUE_SERIAL) //创建串行队列 NSLog("之前 - %@", NSThread.currentThread()) dispatch_async(queue, { () -> Void in //异步执行串行队列-开了一个新的线程 NSLog("sync之前 - %@", NSThread.currentThread()) dispatch_sync(queue, { () ...
weak) NSTimer *timer; @property (nonatomic,strong) dispatch_queue_t queue; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; _queue = dispatch_queue_create("test", DISPATCH_QUEUE_SERIAL); NSTimer * timer = [NSTimer scheduledTimerWithTimeInterval:0.01 target:self...
dispatch_async(serialQueue, {print("Task in the queue...") }) dispatch_async_f函数有三个参数,第一个是类型为dispatch_queue_t的目标队列,第二个是队列上下文指针,第三个是类型为dispatch_function_t的任务函数,队列上下文指针为该函数的唯一参数: classAddTaskToQueue{funclaunch() {letserialQueue=dispatc...
1. dispatch_queue_tqueue = dispatch_queue_create("com.dispatch.serial",DISPATCH_QUEUE_SERIAL); //生成一个串行队列,队列中的block按照先进先出(FIFO)的顺序去执行,实际上为单线程执行。第一个参数是队列的名称,在调试程序时会非常有用,所有尽量不要重名了。
dispatch_sync(queue, ^{ for (int i =0; i <3; i ++) { NSLog(@"3---%@", NSThreadcurrentThread); } }); } // 并发队列+异步任务 (void)concurrentAsyn{ dispatch_queue_t queue =dispatch_queue_create("concurrent",DISPATCH_QUEUE_SERIAL); ...
(1)serial queues(串行队列)又称私有调度队列(private),一般用再对特定资源的同步访问上。我们可以根据需要创建任意数量的串行队列,每一个串行队列之间是并发的。 (2)并行队列,又称global dispatch queue。并行队列虽然可以并发的执行多个任务,但是任务开始执行的顺序和其加入队列的顺序相同。我们自己不能去创建并行调度...
OS_OBJECT_DECL_SUBCLASS(dispatch_queue, dispatch_object) ➡️ OS_OBJECT_DECL_IMPL(dispatch_queue, <OS_OBJECT_CLASS(dispatch_object)>) OS_OBJECT_CLASS宏定义:(##运算符可以用于宏函数的替换部分。这个运算符把两个语言符号组合成单个语言符号,为宏扩展提供了一种连接实际变元的手段。) ...
串行队列 并行队列 dispatch_global_queue();是全局并发队列 dispatch_main_queue();是一种特殊串行队列 背后的线程模型:自定义队列 dispatch_queue_t queue; 可以自定义是并行:DISPATCH_QUEUE_CONCURRENT 或者 串行DISPATCH_QUEUE_SERIAL 苹果为什么要废弃dispatch_get_current_queue?
letconcurrentQueue = dispatch_queue_create(“com.example.MyConcurrentQueue”, DISPATCH_QUEUE_CONCURRENT) 从上面代码可以看到,dispatch_queue_create函数有两个参数,第一个为队列的名称,第二个为队列类型,串行队列为DISPATCH_QUEUE_SERIAL,并发队列为DISPATCH_QUEUE_CONCURRENT。