Спасибо большое за лекцию🎉 У меня осталось 2 вопроса: 1. Concurrent очередь работает в 1 потоке(конкурентно) или нескольких(параллельно)? Или нам это вообще не известно и система сама решает как выполнить задачи в concurrent очереди? 2. Context switch происходит только при выполнении нескольких задач на 1 потоке или он скачет по всем потокам, независимо от задач и типов очередей?
Вячеслав, на 1:05:10, получается если используется sync, то нету смысла делать очередь конкурентной? Так как, очередь в любом случае будет ждать завершения и не получится накинуть на нее еще таски (как в примере с циклом).
Есть смысл делать ее конкурентной, что бы не блокировать остальные задачи которые будут в очереди. Но если других задач точно в очереди не будет, то смысла нет.
Глобально это разные понятия, но в iOS разработке они смежные, так как обычно на одном потоке одна очередь, поэтому иногда я не специально употребляю термин очередь вместо потока
Владислав, правильно ли я понял, что таски на concurrent и serial очередях могут быть выполнены на разных потоках в случае использования global очереди от GCD? Количество задействуемых потоков рассчитывает iOS.
Maksim Nosov на этот вопрос нельзя ответить да или нет. Ответ может разница от системы в которой вы запускаете ваш код. Когда у программиста возникают такого рода вопроса, потратьте 15 минут на проверку гипотизы. В swift есть класс NSThread у которого есть type property currentThread который возвращает информацию - объект потока в котором выполняется код. Запустив несколько параллельных тасков в глобал очереди и распечатав на экран информацию о потоке, вы сможете визуально проверить были ли эти таски распределены между потоками или выполнились в одном потоке. Не забудьте поделиться этим с остальными здесь.
@@bwswift Спасибо, так и сделал. Через NSThread класс я вижу, что в зависимости от интенсивности задачи, ОС выделяет на выполнение таска новый поток. В результате я понимаю, что балансировка под капотом у ОС. Спасибо за развернутый ответ.
Это лучшее объяснение многопоточности, которое я видел. Велике дякую!
Как всегда потрясающе! Поражаюсь Вашему таланту преподавания! Спасибо огромное!
❤️
Шикарная лекция, спасибо большое, дай бог Вам здоровья!
Благодарю, как раз приболел :)
Очень хорошая лекция, большое спасибо, Вячеслав! Прям круто
👍
автору огромная благодарность за отличный и понятный материал!
Который до сих пор остается актуальным :)
Спасибо за ваш труд!
Огромное спасибо!
Спасибо вам большое
:)
Спасибо! Супер лекция!
Будут скоро новые лекции адаптированые под CZcams
Я только что все понял , сам я любил промисы в javascript , а тут как все просто и по полочкам
❤️
5:55
39:30
Спасибо большое за лекцию🎉
У меня осталось 2 вопроса:
1. Concurrent очередь работает в 1 потоке(конкурентно) или нескольких(параллельно)? Или нам это вообще не известно и система сама решает как выполнить задачи в concurrent очереди?
2. Context switch происходит только при выполнении нескольких задач на 1 потоке или он скачет по всем потокам, независимо от задач и типов очередей?
Вячеслав, на 1:05:10, получается если используется sync, то нету смысла делать очередь конкурентной? Так как, очередь в любом случае будет ждать завершения и не получится накинуть на нее еще таски (как в примере с циклом).
Есть смысл делать ее конкурентной, что бы не блокировать остальные задачи которые будут в очереди. Но если других задач точно в очереди не будет, то смысла нет.
@@bwswift Понял, спасибо за ответ
Cпустя 4 года, что то поменялось в Многопоточности?
Только добавила новый подход async/await
Вычеслав, такой вопрос - в данном контексте - очередь и поток - это одно и тоже понятие или разное??
То есть Thread == Queue или != ?
Глобально это разные понятия, но в iOS разработке они смежные, так как обычно на одном потоке одна очередь, поэтому иногда я не специально употребляю термин очередь вместо потока
Владислав, правильно ли я понял, что таски на concurrent и serial очередях могут быть выполнены на разных потоках в случае использования global очереди от GCD? Количество задействуемых потоков рассчитывает iOS.
Maksim Nosov на этот вопрос нельзя ответить да или нет. Ответ может разница от системы в которой вы запускаете ваш код. Когда у программиста возникают такого рода вопроса, потратьте 15 минут на проверку гипотизы. В swift есть класс NSThread у которого есть type property currentThread который возвращает информацию - объект потока в котором выполняется код. Запустив несколько параллельных тасков в глобал очереди и распечатав на экран информацию о потоке, вы сможете визуально проверить были ли эти таски распределены между потоками или выполнились в одном потоке. Не забудьте поделиться этим с остальными здесь.
@@bwswift Спасибо, так и сделал. Через NSThread класс я вижу, что в зависимости от интенсивности задачи, ОС выделяет на выполнение таска новый поток. В результате я понимаю, что балансировка под капотом у ОС. Спасибо за развернутый ответ.