Я проверяю некоторый код и чувствую подозрение на используемую технику.
В среде Linux есть два процесса, которые подключают несколько
сегменты разделяемой памяти. Первый процесс периодически загружает новый набор
файлов для совместного использования и записывает идентификатор общей памяти (shmid) в
местоположение в «главном» сегменте разделяемой памяти. Второй процесс
постоянно читает это "главное" местоположение и использует shmid для прикрепления
другие общие сегменты.
На хосте с несколькими процессорами, мне кажется, это зависит от реализации
относительно того, что происходит, если один процесс пытается прочитать память, в то время как это
пишется другим. Но, возможно, блокировка шины на аппаратном уровне предотвращает
искалеченные биты на проводе? Это не имеет значения, если процесс чтения получил
очень скоро, чтобы быть измененным значением, это имело бы значение, только если чтение было повреждено
к чему-то, что не было ни старой ценностью, ни новой ценностью. Это крайний случай: только 32 бита записываются и читаются.
Поиск в интернете ничего не привел к чему-то определенному в этом
площадь.
Я сильно подозреваю, что это небезопасно или нормально, и что бы я на самом деле
Например, некоторые ссылки на статьи, подробно описывающие проблемы.