протокол когерентности кэша хорошо известен в многоядерном контексте, который находится на аппаратном низком уровне, однако аналогичный случай мы встретим в прикладной области.В последнее время я работаю над проектом, в котором два потока обновляют общие объекты.
- Поток пользовательского интерфейса отвечает за отображение и обновление (посредством действий пользователя) объектов.
- Периодический поток фоновой репликацииобновляет общие объекты, если что-то изменяется другими пользователями.
, поскольку у нас много объектов (50 000 ~ 100 000), каждый поток должен копировать часть объектов в свой собственный буфер, обновляя общие объектыявляется серийным.
- Поток пользовательского интерфейса не будет обновлять объект каждый раз, когда пользователи обновляются.
- Поток фоновой репликации будет обновлять объекты сразу после обнаружения изменений, а затем уведомлять поток пользовательского интерфейса об обновлении.
Таким образом, возникает вопрос: если конфликт объектов обновляется двумя потоками?Есть ли какая-нибудь распространенная идиома, чтобы справиться с этим делом?