Hacker News Digest

11 ноября 2025 г. в 22:11 • chrispenner.ca • ⭐ 110 • 💬 127

OriginalHN

Ditch your (mut)ex, you deserve better

Современные компьютеры имеют несколько ядер, но инструменты синхронизации, такие как мьютексы и семафоры, практически не эволюционировали с момента их создания. Автор утверждает, что управление разделяемым состоянием между потоками остается сложной задачей, и приводит пример банковского счета с операциями пополнения и снятия средств. В многопоточном режиме возникает проблема гонки данных: когда два потока одновременно пытаются снять деньги с одного счета, каждый может проверить баланс, увидеть достаточное количество средств, но после снятия обоими потоками итоговый баланс станет отрицательным.

Эта ошибка особенно коварна, так как она возникает при добавлении многопоточности в ранее корректный код. Автор подчеркивает, что даже простая проверка баланса может прерваться планировщиком потоков, что приводит к некорректным результатам. Статья демонстрирует, как эволюция однопоточного приложения в многопоточное может introduce критические ошибки в совершенно无关 частях кода без каких-либо изменений в этих частях.