Can you think of a better way to implement this code?
private volatile Guid lastEtag; private readonly object lastEtagLocker = new object();internal void UpdateLastWrittenEtag(Guid? etag) { if (etag == null) return; var newEtag = etag.Value.ToByteArray(); // not the most recent etag if (Buffers.Compare(lastEtag.ToByteArray(), newEtag) <= 0) { return; } lock (lastEtagLocker) { // not the most recent etag if (Buffers.Compare(lastEtag.ToByteArray(), newEtag) <= 0) { return; } lastEtag = etag.Value; } }
We have multiple threads calling this function, and we need to ensure that lastEtag value is always the maximum value. This has the potential to be called often, so I want to make sure that I chose the best way to do this. Ideas?