线程是否在不同的调度队列之间共享?

可以在不同的调度队列中使用单个线程吗?

我正在开发一个应用,希望根据运行代码的线程获取一个值。为此,当块在自定义队列中启动时,我更改了线程的名称。

例如,如果我将一个块添加到mi自定义队列中,并且将该线程的名称更改为“ SyncThread”。在默认系统队列中调用的块是否将在该“ SyncThread”中执行?

leemr66 回答:线程是否在不同的调度队列之间共享?

  

可以在不同的调度队列中使用单个线程吗?

是的,这很常见。 (“不同的调度队列”这个概念本身就是有问题的,因为队列可以而且确实可以将其他队列作为目标。看似很简单的问题,例如“当前队列是什么”,没有得到很好的定义。)

  

我正在开发一个应用,希望根据运行代码的线程获取一个值。为此,当块在自定义队列中启动时,我更改了线程的名称。

您可能想要的是队列上下文数据,而不是线程特定的数据(通常称为线程本地存储)。参见DispatchQueue.setSpecific(key:value:)

,

您可以互换使用术语 thread queue ,但是它们不能互换。他们是两件事。苹果不希望开发人员再进行线程化,他们希望开发人员对任务进行排队。排队由GCD处理,GCD负责后台的所有线程处理。这意味着两个队列肯定可以在同一线程上运行。而且,尽管队列中的所有任务都在不同的线程上运行,但并非所有任务都可以在同一线程上运行,因此请记住这一点。因此,我将采用此处给出的建议,将重点放在队列上下文而不是线程上下文上。

本文链接:https://www.f2er.com/3157772.html

大家都在问