Онлайн-школа «Пиксель» — программирование для детей от 5 до 17 лет! Учим детей и подростков создавать игры, анимации и сайты! Образовательная лицензия №Л035-01255-50/00822552.
clubpixel.ru
Контакт для связи: @clubpixel1
Post #1203
61

Почему программа работает правильно 99 раз, а на 100-й внезапно ломается?
Одна из причин — Race Condition, или состояние гонки.
Представим, что два потока программы одновременно работают с одной переменной:
balance = 100
Первый поток хочет прибавить 50, второй — списать 30.
Каждый из них делает примерно одно и то же:
Читает текущее значение balance
Выполняет вычисление
Записывает новый результат
Кажется, итог должен быть 120.
Но если оба потока одновременно прочитают значение 100, первый может записать 150, а второй после него — 70.
В итоге одно из изменений просто потеряется.
И самое неприятное: ошибка может возникать не всегда. Всё зависит от того, в каком порядке процессор выполнит операции.
Именно поэтому в многопоточных программах используют:
🔹 mutex и lock — чтобы временно разрешить доступ к данным только одному потоку
🔹 атомарные операции — действия, которые невозможно «разорвать» другим потоком
🔹 семафоры — чтобы ограничивать количество потоков, работающих с ресурсом одновременно
Такие ошибки особенно опасны в банковских системах, играх, серверах и больших приложениях, где тысячи операций выполняются параллельно.
Программирование — это не только написать правильный алгоритм. Иногда нужно ещё сделать так, чтобы несколько правильных алгоритмов не сломали друг друга.
А вы уже сталкивались с многопоточностью?
✅ Запись: https://clck.ru/3Us8SE
📞 +7 (495) 843-52-51
✉️ info@pixel.study
📲 вопросы в Telegram: @clubpixel1
____
Канал в MAX
Группа в ВК
Одна из причин — Race Condition, или состояние гонки.
Представим, что два потока программы одновременно работают с одной переменной:
balance = 100
Первый поток хочет прибавить 50, второй — списать 30.
Каждый из них делает примерно одно и то же:
Читает текущее значение balance
Выполняет вычисление
Записывает новый результат
Кажется, итог должен быть 120.
Но если оба потока одновременно прочитают значение 100, первый может записать 150, а второй после него — 70.
В итоге одно из изменений просто потеряется.
И самое неприятное: ошибка может возникать не всегда. Всё зависит от того, в каком порядке процессор выполнит операции.
Именно поэтому в многопоточных программах используют:
🔹 mutex и lock — чтобы временно разрешить доступ к данным только одному потоку
🔹 атомарные операции — действия, которые невозможно «разорвать» другим потоком
🔹 семафоры — чтобы ограничивать количество потоков, работающих с ресурсом одновременно
Такие ошибки особенно опасны в банковских системах, играх, серверах и больших приложениях, где тысячи операций выполняются параллельно.
Программирование — это не только написать правильный алгоритм. Иногда нужно ещё сделать так, чтобы несколько правильных алгоритмов не сломали друг друга.
А вы уже сталкивались с многопоточностью?
✅ Запись: https://clck.ru/3Us8SE
📞 +7 (495) 843-52-51
✉️ info@pixel.study
📲 вопросы в Telegram: @clubpixel1
____
Канал в MAX
Группа в ВК
- 🔥 1
- 👾 1


















