Что такое дедлок и как его избежать?
Дедлок — цикл ожидания ресурсов: каждый участник держит ресурс, нужный другому, и ждёт освобождения следующего. В БД система обычно прерывает одну из транзакций, чтобы разорвать цикл.
Читать ответПодготовка к интервью
Разбирайте реальные вопросы, сверяйтесь с подробными ответами и готовьтесь по технологиям и компаниям.
Проверьте, насколько резюме подходит выбранной позиции, и получите рекомендации по улучшению.
Каталог
Дедлок — цикл ожидания ресурсов: каждый участник держит ресурс, нужный другому, и ждёт освобождения следующего. В БД система обычно прерывает одну из транзакций, чтобы разорвать цикл.
Читать ответAtomicInteger и другие атомарные классы позволяют безопасно выполнять отдельные операции над общим значением из нескольких потоков, например incrementAndGet или compareAndSet.
Читать ответЗащиту выбирают по типу операции и месту хранения данных. Mutex не согласует разные процессы, а одна очередь не исключает повторы или параллельную обработку.
Читать ответRactor предоставляет изолированные контексты выполнения и обмен сообщениями для параллельной работы. Пример и описание API относятся к Ruby 3.4.
Читать ответСервер приложений принимает запросы, вызывает Ruby-приложение и отправляет ответ. Важно отделять его работу с соединениями и процессами от бизнес-логики Rails и гарантий базы данных.
Читать ответКорутины, сохранение состояния и обмен через resume/yield. Отличие конкурентного ожидания от параллельной работы CPU.
Читать ответПочему переключение потоков не равно параллельному исполнению, как влияет GVL в CRuby и чем отличаются JRuby и fibers.
Читать ответКак обосновать последовательное выполнение через зависимости, стоимость координации, ограничения ресурсов и измеренную пользу.
Читать ответКак отделить реальный опыт диагностики от общих недостатков языка и давно устаревших ограничений.
Читать ответsync.Pool предназначен для временных переиспользуемых объектов, а не для учёта живых соединений. Как разделить буферы и жизненный цикл SSE-клиента.
Читать ответБазовый шаблон sync.WaitGroup: Add до запуска, defer Done внутри, Wait перед чтением результатов. Как избежать гонок при сборе данных.
Читать ответПочему GOMAXPROCS — ориентир для вычислений, но не предел числа горутин. Ограничение внешних ресурсов, очередь и измерение производительности.
Читать ответ