awesome-everything EN
↑ Обратно к восхождению

Базовый CS с нуля

Время и конкурентность: свободное воспроизведение

Суть Промпты на свободное воспроизведение по всему юниту — зачем существует async, blocking vs non-blocking, правило event loop, concurrency vs parallelism и как общее состояние рождает race conditions, которые чинит lock.
Высота — путь к senior
НольJuniorMiddleSenior
Ты на middle-высоте — в небе
◷ 14 min

Воспроизведение по памяти бьёт перечитывание. Для каждого промпта скажи или запиши полный ответ по памяти, прежде чем открыть образцовый ответ — именно усилие припоминания закрепляет идею. Эти промпты охватывают весь юнит, заканчивая там, куда указывали уроки: что происходит, когда конкурентные задачи делят данные.

Цель

Восстанови спину юнита по памяти — зачем существует async, разделение blocking/non-blocking, единственное правило event loop, различие concurrency vs parallelism и почему общее состояние вынуждает synchronization — не подглядывая в уроки.

Вспомните перед уходом
  1. 01
    Зачем существует async? Используй в ответе разрыв в скорости CPU и устройства.
  2. 02
    В чём разница между blocking- и non-blocking-вызовом и для чего нужен callback?
  3. 03
    Что такое event loop и какое единственное правило определяет, когда выполняется callback?
  4. 04
    В чём разница между concurrency и parallelism и почему одноядерная машина может быть concurrent, но никогда parallel?
  5. 05
    Что такое race condition и почему counter = counter + 1 в двух thread'ах его обнажает?
  6. 06
    Что делает lock, чтобы починить race, и какова цена его использования?
Итог

Если ты смог восстановить каждый ответ по памяти, ты держишь спину юнита: async существует, потому что CPU не должен простаивать через огромный разрыв в скорости CPU и устройства; non-blocking-вызов возвращается сразу и доставляет результат позже через callback; event loop выполняет callback’и по одному за раз, только когда call stack пуст, поэтому синхронный код всегда завершается первым. Это concurrency — переплетение на одном ядре, по очереди — в отличие от parallelism, настоящей одновременности на нескольких ядрах. И как только конкурентные задачи делят состояние, порядок начинает иметь значение: race condition может потерять обновления, потому что read-add-write не атомарен, а lock восстанавливает корректность, сериализуя общую секцию ценой её parallelism.

Продолжить восхождение ↑Время и конкурентность: чтение кода
хоткеи развернуть
поиск
K
пред. пьеса
k
след. пьеса
j
тиры
t
это меню
?
sources3
expand
  1. 01
  2. 02
  3. 03

Trademarks belong to their respective owners. Editorial reference only.