コード例 #1
0
 public void LoadTest()
 {
     Test.Async(async () =>
     {
         var rwl = new AsyncReaderWriterLock();
         var readKeys = new List<IDisposable>();
         for (int i = 0; i != 1000; ++i)
             readKeys.Add(rwl.ReaderLock());
         var writeTask = TaskShim.Run(() => { rwl.WriterLock().Dispose(); });
         var readTasks = new List<Task>();
         for (int i = 0; i != 100; ++i)
             readTasks.Add(TaskShim.Run(() => rwl.ReaderLock().Dispose()));
         await TaskShim.Delay(1000);
         foreach (var readKey in readKeys)
             readKey.Dispose();
         await writeTask;
         foreach (var readTask in readTasks)
             await readTask;
     });
 }