private void ReadingThread() { int numReads = 3; for (int i = 0; i < numReads; ++i) { _readIndicator.Arrive(); _numReading++; _readIndicator.Depart(); _numReading--; } }
public U Read <T, U>(T[] instances, Func <T, U> read) { _readIndicator.Arrive(); try { var idx = RInterlocked.Read(ref _readIndex); _snoop.BeginRead(idx); var result = read(instances[idx]); _snoop.EndRead(idx); return(result); } finally { _readIndicator.Depart(); } }