Я где-то читал, что барьеры отправки должны быть добавлены в пользовательскую очередь, а не в глобальную очередь. Я не понимаю причину этого. Благодарю.Добавление диспетчерских барьеров (GCD) в пользовательские очереди, но не в глобальные параллельные очереди
0
A
ответ
1
Глобальные очереди - это общий ресурс в рамках процесса. Системные структуры должны быть в состоянии зависеть от того, что глобальные очереди не обременены неизвестными блокировками, в противном случае низкоуровневые инфраструктурные процессы могут быть задержаны более высокоуровневыми пользовательскими действиями, что может вызвать взаимоблокировки. GCD дает разработчикам возможность создавать произвольные абстракции параллелизма и блокировать глобальные очереди, поэтому обсуждать их отсутствие в глобальных очередях - спорный вопрос. Спросить, почему у вас не может быть барьеров на глобальных очередях, возникает вопрос, почему один процесс в упреждающей многозадачной системе не может блокировать все остальные.