Комментарии 16
Добрый день, я из Ассоциации К-Д Лаб и я занимался публикацией этого кода. :)
На всякий случай хочу уточнить, что мы не уверены в актуальности этого кода, мы лишь проверили что он собирается и хотя бы запускается с одной из игр. У нас много версий этого движка и какая из них для какой из игр еще надо разбираться.
Я помню вы делали разбор кода Вангеров, а вы не думали делать обзор кода Самогонок, Периметра или VistaEngine? Они точно работают с соответствующими играми.
Ну код конечно мда, смотришь и плакать хочется
Реальный код реального проекта :). Это только в книгах всё идеально :)
Образ разработчика, проектирующего программу рациональным безошибочным способом на основе ясно сформулированных требований, совершенно нереалистичен. Никакая система так никогда не разрабатывалась и, наверное, не будет разрабатываться. Даже примеры разработки небольших программ, встречающихся в учебниках, нереалистичны. Авторы перепроверяют и улучшают их до тех пор, пока не продемонстрируют нам то, что они хотели бы получить, а не то, что получилось на самом деле.
Дэвид Парнас и Пол Клементс (David Parnas and Paul Clements)
В таком случае следует заменить тип int на atomic_int:
А не стрельба по воробьям? простого volatile должено хватить
Даже любопытно, остались ли платформы способные запустить данный код, где int не атомарный по умолчанию...
Дело не только в атомарности изменения, а еще и работе с памятью, кешами и прочим; спинлок и еще что там требуется ( https://github.com/microsoft/STL/blob/main/stl/inc/atomic#L630 )
Впрочем, может оно и не лишнее, опять же, будет гарантировать что изменение в одном потоке действительно будет видно в другом потоке (чего простое добавление volatile не сделает)
Я стараюсь учить в статьях хорошему :)
defaule:
)
Предупреждение N5: деструктор не является виртуальным
Мне кажется или это ложное срабатывание?
Проверка игрового движка qdEngine, часть первая: топ 10 предупреждений PVS-Studio