Ios 空且完全空闲的串行队列
如何释放串行队列的块堆栈?我已经在队列中放置了一些异步执行的块,在某个点上我想完全释放这个队列,使其为空。我正在使用低级Ios 空且完全空闲的串行队列,ios,objective-c,macos,objective-c-blocks,grand-central-dispatch,Ios,Objective C,Macos,Objective C Blocks,Grand Central Dispatch,如何释放串行队列的块堆栈?我已经在队列中放置了一些异步执行的块,在某个点上我想完全释放这个队列,使其为空。我正在使用低级调度队列\u t。可能吗?谢谢。您使用的是哪种队列 是NSOperationQueue吗 然后,-[NSOperationQueue cancelAllOperations]应该完成这项工作。很抱歉,没有说得更具体。我正在使用低级调度队列\u t。请看这个。“NSOperationQueue为您提供了对操作执行方式的更多控制。例如,您可以定义单个操作之间的依赖关系,这在普通GC
调度队列\u t
。可能吗?谢谢。您使用的是哪种队列
是NSOperationQueue吗
然后,
-[NSOperationQueue cancelAllOperations]
应该完成这项工作。很抱歉,没有说得更具体。我正在使用低级调度队列\u t
。请看这个。“NSOperationQueue为您提供了对操作执行方式的更多控制。例如,您可以定义单个操作之间的依赖关系,这在普通GCD队列中是不可能的。还可以取消在NSOperationQueue中排队的操作(只要操作支持它)。当您将块放入GCD调度队列中时,它肯定会在某个时间执行。“是的,但我需要串行FIFO队列,NSOperationQueue
不是这样工作的。请参阅。您是否试图取消当前正在执行的块?这基本上不能通过dispatch\u queue
直接完成,您要么需要使用更高级别的构造,如NSOperationQueue
,要么需要在调度队列执行中添加一个快速退出取消。我不认为“当前正在执行的块”是合适的,因为我们谈论的是FIFO队列。假设当我想要释放队列时,可能有当前正在执行的块。我理解,若当前正在执行的块不能被取消,那个么若这个块将完成执行,那个么它就可以了。但是我想取消剩余的块,这些块被堆叠起来以供执行。快速退出取消是什么意思?在调度队列中没有任何取消方法。因此,所有块都将执行,并且在某个时间点将成为当前正在执行的块。调度队列没有刷新机制。