Комментарии 13
Спасибо за статью.
Могу также посоветовать очень хорошую книгу для понимания многопоточки в С++ -
Энтони Уильямс: Параллельное программирование на С++ в действии.
Спасибо за хорошую статью.
Очень понравилось про причиные некоторого поведения, например:
atomic2 = atomic1;
Где-то ещё можно такое почитать?
Ещё я бы немного поправил вот это место (чтобы было ясно, что новый код функционально эквивалентен, но только при однопоточной работе).
Компилятор и CPU могут переупорядочивать операции чтения/записи (при условии, что это переупорядочивание никак не затронет функциональность однопоточного кода), то есть могут быть фактически выполнены в порядке, отличном от того, который определен в коде. Проблема с этим может возникнуть в многопоточной среде,
Жду вашу реализацию лок фри очереди так "как это делается в opencl и cuda"
вы полностью отрицаете существование не параллелящихся алгоритмов?
Отличный план! Осталось понять как раздавать задания без использования очередей...
other = atomicBool.load();
Искал по тексту но так и не нашел определения переменной atomicBool. Какой у нее тип хотя бы? Интуитивно я догадываюсь, что std::atomic<bool>, хотя может быть и ошибаюсь.
А то выходит, что автор и пытался рассказать сложную тему, но в первом же примере кода зачем-то умолчал о вещах, необходимых для понимания.
Как работать с атомарными типами данных в C++