Когда в Go следует применять panic и как это делать правильно? механизм обработки критических ошибок используется при непредвиденных, фатальных ситуациях чаще всего встречается в низкоуровневом коде или при ошибках…
Синхронизация в Java — способ защитить критическую секцию synchronized блокирует один монитор (объект) в каждый момент монитор удерживает только один поток, который выполняет критическую секцию остальные потоки…
ConcurrentModificationException сообщает о некорректном изменении коллекции во время итерации независимо от числа потоков; поэтому однопоточная модификация с нарушением правил итерации — частая причина.
async-функция в любом случае возвращает Promise, даже когда в её теле отсутствует await до первого await код внутри async-функции выполняется синхронно при достижении await выполнение приостанавливается, а управление…
GCD (Grand Central Dispatch) — низкоуровневый фреймворк для многопоточности в iOS/macOS Представляет собой обёртку над pthread и ядром ОС (libdispatch) Предоставляет очереди задач для синхронного и асинхронного…
Что будет с корутиной в GlobalScope после cancel() родительского скоупа? Корутинa в GlobalScope — выполняется вне иерархии скоупов GlobalScope не зависит от родительских скоупов Вызов cancel() у родителя не оказывает…
Слайс в Go представляет собой структуру из трёх полей: указателя на массив, длины и ёмкости. Он передаётся как значение: копируется структура слайса, а не весь массив. При таком копировании указатель остаётся тем же,…
Зачем Go runtime использует “work stealing” и как устроена эта модель? concurrency model Go (Goroutine scheduler) сокращение простоя CPU за счёт динамической балансировки нагрузки каждый P (processor) располагает…
Hashtable — синхронизированная реализация словаря Для всего объекта применяются coarse-grained блокировки При конкурентном доступе производительность снижается Его заменил ConcurrentHashMap с более эффективным…
GIL (Global Interpreter Lock) — механизм блокировки на уровне интерпретатора CPython Он ограничивает одновременное выполнение CPU-bound задач только одним потоком Во время I/O поток передаёт управление, поэтому GIL…
Высокоуровневая абстракция над потоками с удобным объектным API Поддержка приоритетов и настройка зависимостей между задачами Возможность отменять и приостанавливать операции Поддержка наблюдателей и KVO для контроля…