1:22 Асинхронность vs Многопоточность 2:35 Serial Concurrent 3:37 сколько потоков могут иметь serial и concurrent очереди 4:40 семафор и Mutex 9:06 что такое атомарность 9:50 barrierTask 16:20 Есть ли способ отменить переданный на выполнение блок в GCD 17:35 Что такое QoS 19:15 Потокобезопасны ли классы и структуры 20:30 Что такое тред пул 22:00 Потокобезопасно ли чтение или доступ к переменным класса 22:46 Почему serial быстрее concurrent 23:45 Какое количество потоков может максимально выполняться в единицу времени 24:16 Когда DispatchQueue создаст новый поток? 24:45 Правда ли что у каждого потока свой RunLoop? 25:30 Можно ли работать с массивом read/write внутри dispatch async
6:59 (с код в описании) - не верный: 1. имеется синтактическая ошибка, вместо serialQueue нужно queue 2. semaphore.wait() вызывается не в правильном месте, нужно до асинхронного блока кода (до queue.async {)
Джун для джунов - интересный формат). Но... много не точностей и ляпов((, имейте ввиду новички переучиваться потом будет сложнее, чем сразу нормально учится на офф. документации.
По первом вопросу НЕВЕРНО! Асинхронные задачи могут выполняться как в рамках одного потока, так и в рамках нескольких потоков - т.е. многопоточный асинхронный код.
Только асинхронность - это характеристика вызова (неблокирующий) с возвратом управления вызывающему потоку мгновенно. А многопоточность - распределение работы (процессов) по потокам. Этот странный вопрос в духе сравнения теплого с мягким иногда встречается, увы ))
24:12 а разве 64 бита как-то связано с количеством потоков? 64 бита определяют размер указателя и количество памяти считываемое за один цикл обращения к памяти
сказать сколько точно потоков у системы с лету сложно. Думаю у самого тред пула есть как определенно созданное кол-во так и возможность раширяться и thread explosiion по хорошему добиться сложно, в штатном режиме
1:22 Асинхронность vs Многопоточность
2:35 Serial Concurrent
3:37 сколько потоков могут иметь serial и concurrent очереди
4:40 семафор и Mutex
9:06 что такое атомарность
9:50 barrierTask
16:20 Есть ли способ отменить переданный на выполнение блок в GCD
17:35 Что такое QoS
19:15 Потокобезопасны ли классы и структуры
20:30 Что такое тред пул
22:00 Потокобезопасно ли чтение или доступ к переменным класса
22:46 Почему serial быстрее concurrent
23:45 Какое количество потоков может максимально выполняться в единицу времени
24:16 Когда DispatchQueue создаст новый поток?
24:45 Правда ли что у каждого потока свой RunLoop?
25:30 Можно ли работать с массивом read/write внутри dispatch async
Лучший, бро)
Прям ждал следующий видос, а тут ещё и по такой нужной мне сейчас теме. Автор красавчик
Спасибо!) на этой неделе будет второй выпуск по поточке!
@@fonzyara жду. По ARC готовился в том числе и по твоему видео, по многопоточке тоже буду
@@fonzyaraочень ждём следующий выпуск по многопоточке👍
@@fonzyara я так понимаю вторую часть снесли?
Очень круто и полезно, не забрасывай канал, у тебя хорошо и просто получается объяснять - редко встретишь сейчас такие каналы
3:50 - Serial НЕ гарантирует, что все задачи будут на одном потоке
Спасибо за разбор вопросов! Как и все жду следующее видео
6:59 (с код в описании) - не верный:
1. имеется синтактическая ошибка, вместо serialQueue нужно queue
2. semaphore.wait() вызывается не в правильном месте, нужно до асинхронного блока кода (до queue.async {)
Отличный видикс для новичков. Только звук бы погромче выкрутить
Джун для джунов - интересный формат). Но... много не точностей и ляпов((, имейте ввиду новички переучиваться потом будет сложнее, чем сразу нормально учится на офф. документации.
@@МаринаЛеонова-д5й да, так и есть. Был бы я собеседующим, я бы многое не принял как за полный ответ и много вопросов задал бы дополнительно.
24:58 - не у каждого потока всегда есть ранлуп, а только у главного, для остальных нужно создавать его и запускать самостоятельно
Хорошие видео, спасибо. Хотелось бы более подробной информации конечно ) Copy on write sweezling и т д. Но спасибо огромное автору
По первом вопросу НЕВЕРНО! Асинхронные задачи могут выполняться как в рамках одного потока, так и в рамках нескольких потоков - т.е. многопоточный асинхронный код.
Только асинхронность - это характеристика вызова (неблокирующий) с возвратом управления вызывающему потоку мгновенно. А многопоточность - распределение работы (процессов) по потокам. Этот странный вопрос в духе сравнения теплого с мягким иногда встречается, увы ))
Наверное самое простое объяснение которое видел)
Спасибо за очередную интересную серию.
Желательно сделать звук погромче.
Большое спасибо!
Спасибо за видос!
Только есть пару моментов. Очень тихий звук и слышно как ты делаешь каждое движение мышкой.
Из коробки runloop ведь есть только у main потока, для всех остальных надо реализовывать самому
Жаль что перестал выкладывать видосики
Бро, когда продолжение? Очень надо.
24:12 а разве 64 бита как-то связано с количеством потоков? 64 бита определяют размер указателя и количество памяти считываемое за один цикл обращения к памяти
Все верно говоришь!
Прав и это не фактор, говорящий напрямую о кол-ве потоков, но косвено он тоже влияет на их кол-во
сказать сколько точно потоков у системы с лету сложно. Думаю у самого тред пула есть как определенно созданное кол-во так и возможность раширяться и thread explosiion по хорошему добиться сложно, в штатном режиме
а зачем отпускать мьютекс в последнем примере в блоке defer - разве просто вызов unlock() после append не так же отработает?
Майн респектабль
Кто шуршит