【问题标题】:iOS: A specific function can be called from multiple threads/places, but I want each call to execute in a queueiOS:可以从多个线程/位置调用特定函数,但我希望每个调用都在队列中执行
【发布时间】:2017-06-07 08:34:41
【问题描述】:

我有一个函数 readData 从 HealthKit 读取数据,执行需要几秒钟。 可以从多个线程/位置调用此函数,但我希望每次调用都在队列中执行,一次一个,而不是并行执行。

有没有一种简单的方法可以在 Swift for iOS 中使用 GCD 或 OperationQueues 来实现这一点?

【问题讨论】:

    标签: swift multithreading grand-central-dispatch nsoperationqueue


    【解决方案1】:

    是的,串行 DispatchQueue 应该可以解决您的问题。确保在您需要的每个函数都可以访问它的范围内创建它。

    let serialQueue = DispatchQueue(label: "serialQueue")
    serialQueue.async{  //call this whenever you need to add a new work item to your queue
        //call function here
    }
    

    【讨论】:

    • 我有一个类似的问题,我想到了 DispatchQueue 但我担心的是上面的@pratik 要求顺序执行提交的进程(不是并行的)。调度队列本质上是串行的(FIFO),但是这些进程的执行在多核处理器中仍然可以并行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-18
    • 2015-06-08
    • 2021-03-04
    相关资源
    最近更新 更多