Я пишу систему для автоматического пересчета результатов дорогостоящих методов, а затем сохраняю их в кеше.Кэш может быть распределен, что означает (очевидно), что несколько процессов могут получить к нему доступ.
При первом вызове метода для кэширования результата, я хочу создать поток, который будет периодически пересчитывать результат методаи обновите кеш.
Я хочу, чтобы для каждого элемента кэша создавался только один поток выполнения.В многопроцессорной среде это может быть достигнуто с помощью мьютекса перекрестного процесса, такого как этот?
http://msdn.microsoft.com/en-us/library/system.threading.mutex.aspx
Есть ли какие-либо подводные камни с этим подходом?:
Таблица правды для моей реализации:
// in-cache | mutex-found
// 0 0 //not in cache, no mutex; start thread
// 1 0 //in cache, no mutex; assume thread already started (re-calculating thread could be in another process)
// 0 1 //not in cache, mutex found; thread started, do not start thread - log error (and possibly start new thread)
// 1 1 //in cache, mutex found; thread started, do not start thread