例如。我有三个后台任务。当前运行三个线程且在线程中的是代码
Dispatchqueue.main.async {
//SOMETHING CODE
}
在Dispatchqueue.main.async
处可以同时执行三个不同线程中的代码吗?谢谢!
答案 0 :(得分:2)
主队列是串行的,因此一次只能运行一件事。如果同时将多个块提交到主队列,它们将顺序运行。
通常,您应该避免从线程角度考虑这一点。线程通常是队列赖以生存的实现细节。 (例如,如果您正在积极地使用pthreads创建自己的线程,则通常应避免这种情况,并使用队列。)线程和队列不是一对一的,除了主线程和主队列是捆绑在一起的彼此。
这很重要,因为您通常不“在线程上运行代码”。您将一个块分派到队列中,GCD会将那个块调度到某个线程上。当您以这种方式看到它时,主队列的行为应该变得更加清楚。