How gbalog/rooks_dance works
Это консольная симуляция одновременных ходов 4–6 ладей. Пользователь задаёт число фигур и может отключить доску; главный поток запускает менеджер, который создаёт потоки ладей. Каждая ладья выбирает цель, делает попытки хода и сообщает менеджеру о ходе, таймауте или завершении. Менеджер синхронизирует поле, обрабатывает очереди сообщений, выводит события и обновляет доску до завершения всех ладей. Поведение подтверждено README и просмотренными исходниками; отдельные связи не показаны там, где вызовы не подтверждены.
Main entry points: BoardManager.cpp Менеджер доски · RookHandler.cpp Потоки ладей · ConcurrentQueue.h Очереди сообщений · main.cpp CLI и запуск
Components 9
Запуск
- CLI и запуск
src/main.cpp
Симуляция
- Менеджер доски
src/BoardManager.cpp - Потоки ладей
src/RookHandler.cpp - Состояние доски
src/BoardManager.h
Координация
- Очереди сообщений
src/ConcurrentQueue.h - Типы событий
src/LogMessages.h
Вывод
- Отрисовка поля
src/FieldDrawer.h
Other components
- Пользователь
- Консоль
Connections 12
- Пользователь → CLI и запуск: задаёт параметры
- CLI и запуск → Менеджер доски: запускает
- Менеджер доски → Потоки ладей: создаёт потоки
- Потоки ладей → Менеджер доски: запрашивают ход
- Потоки ладей → Менеджер доски: сообщают события
- Менеджер доски → Состояние доски: проверяет и меняет
- Менеджер доски → Очереди сообщений: помещает события
- Менеджер доски → Очереди сообщений: извлекает события
- Менеджер доски → Очереди сообщений: ставит завершившиеся потоки
- Менеджер доски → Отрисовка поля: передаёт снимок
- Менеджер доски → Консоль: выводит события
- Отрисовка поля → Консоль: рисует поле