могу понять одну вещь в GCD.
У меня две очереди. Я проверяю в каждой на каком потоке она выполняет таск. Две очереди выполняют их на разных потоках.
В первой я принчу 1 и усыпляю поток на две секунды, сам таск отправляю синхронно, что блокирует данную очередь. Главный вопрос: как так выходит, что вторая очредь ждет выполнения таска у первой? Разве очереди не должны работать независимо друг от друга? Как она понимает что первая очердь спит, откуда? Может это потому что все приватные очерди все равно отправляют все свои таски на глобал очередь?
Скорее всего так никто не делает, просто мне бы хотелось понять полностью устройство этой абстракции
Программа же работает сверху вниз. Пока не закончится выполнения concurrent1 выполнение кода не будет продолжаться. Если выполнить асинхронно, то поток пойдет дальше. Попробуй поставить сначала асинк с паузой на 1-2 сек, потом синк с паузой на 1-2 сек.
все я понял, слип усыпает главный поток в котором я долежен вызвать выполнение второго таска, поэтому он закину тего в очередь после слипа
Обсуждают сегодня