
Представим простую задачу: десять потоков должны увеличить общий счётчик по миллиону раз. Математика элементарная — в результате ожидаем десять миллионов. Но программа может вывести совсем другое число. Причём ошибка не обязательно будет повторяться при каждом запуске. Разберёмся, почему так происходит, как исправить проблему с помощью std::mutex и std::atomic , когда нужны std::condition_variable и std::future , а также чем std::jthread удобнее обычного std::thread . Все примеры рассчитаны на C++20, если не указано иное. Читать далее
Continue to Habr →You are being forwarded in 6s — stay on this page