internal V Get <V>(UserDataSlot <V> slot, V defaultValue) { using (synchronizer.AcquireReadLock()) { return(slot.GetUserData(this, defaultValue)); } }
public IEnumerable <IMetricDefinition> GetMetricDefinitions() { IList <IMetricDefinition> definitions; using (readerWriterLock.AcquireReadLock()) definitions = metricDefinitions.ToList(); TryRefreshMetricDefinitions(); return(definitions); }
public IEnumerable <TConsumer> QueryConsumers <TConsumer>() { var result = new LinkedList <TConsumer>(); using (_consumersLock.AcquireReadLock()) foreach (var consumer in _consumers) { if (consumer is TConsumer tConsumer) { result.AddLast(tConsumer); } } return(result); }
public IEnumerable <TFilter> QueryFilters <TFilter>() { var result = new LinkedList <TFilter>(); using (_filtersLock.AcquireReadLock()) foreach (var filter in _filters) { if (filter is TFilter tFilter) { result.AddLast(tFilter); } } return(result); }
private List <MachineLocation> GetMachineLocations(ContentHash contentHash) { List <MachineLocation> machines = new List <MachineLocation>(); long contentId = contentHash.LeastSignificantLong(); using (_ringLock.AcquireReadLock()) { int firstNodeIndex = FindFirstNodeIndex(contentId); for (int i = 0; i < Math.Min(_ring.Length, _copiesQuantity); i++) { int currentPosition = (firstNodeIndex + i) % _ring.Length; // This implementation of Consistent Hashing does not use virtual nodes machines.Add(_ring[currentPosition].MachineLocation); } }; return(machines); }
public ReadLockHelper(ReaderWriterLockSlim rwLock) { rwLock.AcquireReadLock(-1); this.rwLock = rwLock; }