我的iOS应用程序上有一个刷新按钮,用于在GCD中启动异步调度队列。队列的名称是自定义的。可能存在这样的问题:用户敲出按钮并导致创建大量不必要的队列。我希望检查是否有一个具有特定名称的队列处于活动状态,因此我无法启动另一个队列或添加到同名的同一队列。
这可能吗?
答案 0 :(得分:2)
我认为你不应该在每个请求上创建新的队列。而且,由于您在创建新队列以执行每个块时似乎并不担心它们是顺序的,我建议您使用全局队列来运行块。这两个操作都是同义的,因为这些是您生成的调度队列的最终目标队列。获取队列很简单,应该替换创建自己队列的代码。
dispatch_queue_t aQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
如果您希望它们按顺序运行,您应该将自己的队列定义为实例变量,这样您只需创建一次并在每次需要分配块时使用相同的队列。
答案 1 :(得分:0)
您可以使用添加的对象维护一个Mutable字典
[dict setobject:<your object> forkey:<the queue name>]
当您发送后续请求时,您可以在方法中检查以下内容:
object = [dict objectforkey:<queue name>]
if (object == nil)
//send the request
队列操作完成后,从字典中删除键对象。
[dict removeobjectforkey: < queue name >
答案 2 :(得分:0)
不,没有办法按名称从系统获取串行队列。您需要自己拥有串行队列。