Как устроен CountDownLatch? синхронизатор из Java concurrency создаётся с начальным счётчиком метод await() приостанавливает поток, пока счётчик не станет равен 0 метод countDown() уменьшает значение счётчика на 1…
Как устроен UI-поток с Looper и Handler и зачем нужен main.immediate? В Android UI-поток является главным потоком, в котором работает Looper Looper последовательно обрабатывает очередь сообщений (MessageQueue) С…
Как устроен алгоритм Fiber в React? внутренний механизм React для эффективного обновления UI делит вычисления на небольшие микрозадачи (юниты) применяет приоритеты, чтобы сначала обрабатывать наиболее важные изменения…
Как устроен планировщик горутин в Go и какую роль играют GOMAXPROCS и ядра ОС В Go используется M:N модель: большое количество горутин распределяется между меньшим числом системных потоков (OS threads). За…
Планировщик задач в Go: кооперативная и вытесняющая многозадачность В Go применяется гибридный планировщик, объединяющий признаки кооперативной и вытесняющей многозадачности При кооперативной многозадачности goroutine…
Типичный процесс непрерывной интеграции (CI pipeline) Автоматическая сборка проекта и выполнение тестов Сборка приложения после каждого коммита Запуск юнит- и интеграционных тестов Проверка кода с помощью статического…
Как устроен цикл событий (event loop) и как он выполняет асинхронный код? механизм организации асинхронности в JavaScript и средах его выполнения функционирует до тех пор, пока в очереди остаются задачи работает со…
Как устроена FIFO-очередь в RabbitMQ? RabbitMQ представляет собой брокер сообщений, работающий с очередями В стандартной очереди сообщения доставляются по принципу FIFO (First In, First Out) Сначала в очередь попадают…
Как устроена suspend-функция в Kotlin под капотом: стейт-машина? Kotlin coroutines позволяют создавать асинхронный код без блокировки потоков при компиляции suspend-функция превращается в стейт-машину с набором…
Как устроена асинхронность в JavaScript? событийная модель выполнения (event loop) call stack — стек, в котором исполняются синхронные функции message queue — очередь задач для асинхронных колбеков Web APIs — таймеры,…
Как работает формат соединения WebSocket? протокол для двунаправленного обмена данными поверх TCP соединение начинается с HTTP/HTTPS рукопожатия (handshake) клиент отправляет HTTP-запрос с заголовком Upgrade:…
появились в ES6 и используют синтаксис function* вместе с yield это итератор, выполнение которого можно приостанавливать и возобновлять метод .next() возвращает объект вида {value, done} yield передаёт наружу…