阻塞线程和阻塞队例的区别

更新:关于GCD,还有两个需要说的:

func dispatch_barrier_async(_ queue: dispatch_queue_t, _ block: dispatch_block_t):

这个方法重点是你传入的queue,当你传入的queue是通过DISPATCH_QUEUE_CONCURRENT参数自己创建的queue时,这个方法会阻塞这个queue注意是阻塞 queue ,而不是阻塞当前线程),一直等到这个queue中排在它前面的任务都执行完成后才会开始执行自己,自己执行完毕后,再会取消阻塞,使这个queue中排在它后面的任务继续执行。

如果你传入的是其他的queue, 那么它就和dispatch_async一样了。

func dispatch_barrier_sync(_ queue: dispatch_queue_t, _ block: dispatch_block_t):

这个方法的使用和上一个一样,传入自定义的并发队列(DISPATCH_QUEUE_CONCURRENT),它和上一个方法一样的阻塞queue,不同的是 这个方法还会阻塞当前线程

如果你传入的是其他的queue, 那么它就和dispatch_sync一样了。

你可能感兴趣的:(阻塞线程和阻塞队例的区别)