【问题标题】:GCD concurrent queue with operations of same priority?GCD并发队列具有相同优先级的操作?
【发布时间】:2016-05-13 10:46:16
【问题描述】:

我知道 GCD 有串行和并发队列。

我还知道串行队列以 FIFO 方式执行,并发队列根据线程的优先级和可用性来执行。

我找不到任何关于发生的事情的描述 具有相同优先级操作的并发队列。

它们是否以先进先出的方式执行,因为每个操作都具有相同的优先级?

谁能帮我找出来?

【问题讨论】:

  • 如果两者都是同步请求,我认为 fifo 方式
  • GCD 不保证将使用哪个线程来执行并发队列上的块
  • 是的,这就是操作队列的作用,操作队列根据其优先级和准备情况执行其排队的操作对象。如果所有排队的操作对象具有相同的优先级,并且在它们被放入队列时准备好执行,则它们将按照它们提交到队列的顺序执行。

标签: ios iphone ios9


【解决方案1】:

来自GCD reference

并发:任务按 FIFO 顺序出队,但并发运行,可以按任意顺序完成。

因此,提交到特定队列的任务将按 FIFO 顺序出列。提交到 GCD 队列的任务彼此之间没有优先级,只有队列具有服务质量 (QoS) 值。

如果您询问提交到不同队列且队列具有相同 QoS 值的任务,则执行顺序未定义超出在各自队列中按 FIFO 顺序执行的任务。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-27
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多