Быстрое выполнение очереди - PullRequest
0 голосов
/ 11 апреля 2019

Например.У меня есть три фоновые задачи.В настоящее время работает три потока и в потоках есть код

Dispatchqueue.main.async { 
  //SOMETHING CODE
}

Может ли код в трех разных потоках выполняться одновременно там, где есть Dispatchqueue.main.async?Спасибо!

1 Ответ

2 голосов
/ 11 апреля 2019

Основная очередь является последовательной, поэтому по ней будет работать только одна вещь за раз.Если несколько блоков отправляются в основную очередь одновременно, они будут выполняться последовательно.

Как правило, следует избегать думать об этом с точки зрения потоков.Потоки, как правило, являются деталями реализации, над которыми располагаются очереди.(Если вы активно создаете свои собственные потоки, например, с помощью pthreads, вам следует избегать этого и использовать очереди.) Потоки и очереди не являются однозначными, за исключением основного потока и основной очереди, которые связаныдруг другу.

Это важно, потому что вы обычно не "запускаете код в потоке".Вы отправляете блок в очередь, и GCD планирует этот блок на некоторый поток.Когда вы видите это таким образом, то поведение главной очереди должно стать более понятным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...