iOS:未发布的调度队列

Posted

技术标签:

【中文标题】iOS:未发布的调度队列【英文标题】:iOS: unreleased dispatch queue 【发布时间】:2013-07-24 10:15:09 【问题描述】:

因此,为了下载和显示图像,我曾经这样做过:

dispatch_async(dispatch_queue_create("bgQ", 0), ^
    // download image
    dispatch_async(dispatch_get_main_queue(), ^
        // display iamge
    );
);

但我意识到这样我并没有释放调度队列。 那么问题来了,我们需要单独声明队列以便稍后释放它还是可以在第一个示例中以某种方式释放队列?

我们需要这样做吗?:

dispatch_queue_t bgQ = dispatch_queue_create("bgQ", 0);

dispatch_async(bgQ, ^
    // download image
    dispatch_async(dispatch_get_main_queue(), ^
        // display iamge
    );
);

dispatch_release(bgQ);

【问题讨论】:

【参考方案1】:

你可以试试这个

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^
    // download image
     dispatch_async(dispatch_get_main_queue(), ^
    //display image
    
    

或下载图片试试这个 AsyncImageView

【讨论】:

我记得在某处看到我们不应该使用 dispatch_get_global_queue,无论出于何种原因 感谢链接,但我已经知道异步imageview的实现,我的问题只是针对使用dispatchH_async和处理dispatch_queues的原理 没关系,我记得建议不要使用 get_global_queue,而是 get_current_queue。感谢您的回答! 很高兴为您提供帮助@ZoltánMatók

以上是关于iOS:未发布的调度队列的主要内容,如果未能解决你的问题,请参考以下文章

ios/swift 调度队列 - 全局和主队列概念

怎么用C语言实现多级反馈队列调度算法?

进程调度算法时间片轮转调度算法多级反馈队列调度算法(Java实现)

IO调度算法

使用工作队列的 Kubernetes 作业调度

如何停止调度队列中任务的执行?