Высокая производительность кэширования

Следующий код должен кэшировать последнее чтение.LastValueCache это кеш, к которому могут обращаться многие потоки (именно поэтому я использую разделяемую память). Для меня нормально иметь условия гонки, но я хочу, чтобы другие темы увидели измененныеLastValueCache.

class Repository
{
    public Item LastValueCache
    {
        get
        {
            Thread.MemoryBarrier();
            SomeType result = field;
            Thread.MemoryBarrier();
            return result;
        }
        set
        {
            Thread.MemoryBarrier();
            field = value;
            Thread.MemoryBarrier();
        }
    }

    public void Save(Item item)
    {
        SaveToDatabase(item);
        Item cached = LastValueCache;
        if (cached == null || item.Stamp > cached.Stamp)
        {
            LastValueCache = item;
        }
    }

    public void Remove(Timestamp stamp)
    {
        RemoveFromDatabase(item);
        Item cached = LastValueCache;
        if (cached != null && cached.Stamp == item.Stamp)
        {
            LastValueCache = null;
        }
    }

    public Item Get(Timestamp stamp)
    {
        Item cached = LastValueCache;
        if (cached != null && cached.Stamp == stamp)
        {
            return cached;
        }

        return GetFromDatabase(stamp);
    }
}

Repository Объект используется многими потоками. Я не хочу использовать блокировку, потому что это повлияет на производительность, которая в моем случае важнее согласованности данных. Вопрос в томкакой самый маленький синхронизирующий механизм, который будет соответствовать моим потребностям? Может бытьvolatile или одинMemoryBarrier вget а такжеset будет достаточно?

Ответы на вопрос(3)

Ваш ответ на вопрос