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 по хорошему добиться сложно, в штатном режиме
@@АндрейЦуркан-ж8ч а зачем ты в каждом ответе подчеркиваешь что вопрос «глупый» и задавать вопросы значит «позориться»? Неуместные попытки самоутвердиться?
Ну не надо позориться, у каждого потока есть свой runLoop просто пока его не сконфигурировали он как бы спит, и поток использует runLoop основной очереди
По первом вопросу НЕВЕРНО! Асинхронные задачи могут выполняться как в рамках одного потока, так и в рамках нескольких потоков - т.е. многопоточный асинхронный код.
Только асинхронность - это характеристика вызова (неблокирующий) с возвратом управления вызывающему потоку мгновенно. А многопоточность - распределение работы (процессов) по потокам. Этот странный вопрос в духе сравнения теплого с мягким иногда встречается, увы ))
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й да, так и есть. Был бы я собеседующим, я бы многое не принял как за полный ответ и много вопросов задал бы дополнительно.
Спасибо, но почему при разборе mutex ты рассказывал про NSLock, когда NSLock это просто обертка над mutex?
24:12 а разве 64 бита как-то связано с количеством потоков? 64 бита определяют размер указателя и количество памяти считываемое за один цикл обращения к памяти
Все верно говоришь!
Прав и это не фактор, говорящий напрямую о кол-ве потоков, но косвено он тоже влияет на их кол-во
сказать сколько точно потоков у системы с лету сложно. Думаю у самого тред пула есть как определенно созданное кол-во так и возможность раширяться и thread explosiion по хорошему добиться сложно, в штатном режиме
Да, разрядность системы связана с количеством поток приложения которые могут выделиться, почитайте про это, чтобы не задавать глупых вопросов
@@АндрейЦуркан-ж8ч а зачем ты в каждом ответе подчеркиваешь что вопрос «глупый» и задавать вопросы значит «позориться»? Неуместные попытки самоутвердиться?
Бро, когда продолжение? Очень надо.
24:58 - не у каждого потока всегда есть ранлуп, а только у главного, для остальных нужно создавать его и запускать самостоятельно
Ну не надо позориться, у каждого потока есть свой runLoop просто пока его не сконфигурировали он как бы спит, и поток использует runLoop основной очереди
Хорошие видео, спасибо. Хотелось бы более подробной информации конечно ) Copy on write sweezling и т д. Но спасибо огромное автору
Спасибо за очередную интересную серию.
Желательно сделать звук погромче.
Большое спасибо!
Спасибо за видос!
Только есть пару моментов. Очень тихий звук и слышно как ты делаешь каждое движение мышкой.
а зачем отпускать мьютекс в последнем примере в блоке defer - разве просто вызов unlock() после append не так же отработает?
По первом вопросу НЕВЕРНО! Асинхронные задачи могут выполняться как в рамках одного потока, так и в рамках нескольких потоков - т.е. многопоточный асинхронный код.
Только асинхронность - это характеристика вызова (неблокирующий) с возвратом управления вызывающему потоку мгновенно. А многопоточность - распределение работы (процессов) по потокам. Этот странный вопрос в духе сравнения теплого с мягким иногда встречается, увы ))
Наверное самое простое объяснение которое видел)
Из коробки runloop ведь есть только у main потока, для всех остальных надо реализовывать самому
Нет, они есть просто не сконфигурированы
Кто шуршит
Майн респектабль