Задача из области gamedev.
Есть сервер, который шлет через Message Queues обновления карты процессам-клиентам
(на каждый процесс - отдельная очередь с идентификатором через ftok()).
Среди обновлений карты рассматривается событие лишь одного типа -
с карты исчез объект. При этом, клиентам приходит соответствующее
сообщение с кодом REMOVE_OBJECT. После этого клиентам следует сменить
один байт карты (так как каждый объект занимает один байт).
Обработка (прием) этих сообщений выполянется в каждом клиенте - одной нитью (pthread),
и используется двумя другими нитями (обработка действий игрока и отображение карты).
Как сделать, чтобы вторая и третья нити (которые используют измененную карту),
всегда использовали актуальные значения карты?
Карта типа unsigned char[] изменяется за один раз (одно сообщение) - на один байт (x,y).
P.S. Когда-то при программировании (в 90-е) годы, помню, использовали
префикс volatile. Можно ли его применить в данном случае к массиву map[], и - нужно ли?
Блокировки через mutex, я там понимаю, тоже здесь - бессмысленны?
Похожие темы
- Форум Использование блокировки для синхронизации блока данных между pthread'ами (2011)
- Форум Правильный вывод элементов массива (2022)
- Форум «Правильная» двухсторонняя синхронизация файлов HA проекта (2012)
- Форум Правильная синхронизация аппаратных часов в Gentoo? (2017)
- Форум Правильная синхронизация set-get в Java (2017)
- Форум Как правильнее изменять размер массива в С++? (2012)
- Форум синхронизация (2012)
- Форум Синхронизация (2013)
- Форум Синхронизация (2012)
- Форум синхронизация (2014)