private void ReadingThread()
        {
            int numReads = 3;

            for (int i = 0; i < numReads; ++i)
            {
                _readIndicator.Arrive();
                _numReading++;
                _readIndicator.Depart();
                _numReading--;
            }
        }
Пример #2
0
 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();
     }
 }