Advertisement
Guest User

RW Lock Slim reader starvation

a guest
Apr 11th, 2013
542
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 0.94 KB | None | 0 0
  1. using System;
  2. using System.Threading;
  3. using System.IO;
  4.  
  5. class App
  6. {
  7.   static ReaderWriterLockSlim rw = new ReaderWriterLockSlim();
  8.   static int reads = 0;
  9.   static int writes = 0;
  10.  
  11.   static void Main()
  12.   {
  13.     File.WriteAllText("data.txt", "test");
  14.     for (int i = 0; i < 3; ++i)
  15.     {
  16.       new Thread(Reader).Start();
  17.       new Thread(Writer).Start();
  18.     }
  19.  
  20.     while(true)
  21.     {
  22.       Thread.Sleep(1000);
  23.       int r = reads;
  24.       int w = writes;
  25.       Console.WriteLine("reads:{0} writes:{1}\r", r, w);
  26.     }
  27.   }
  28.  
  29.   static void Reader()
  30.   {
  31.     while(true)
  32.     {
  33.       rw.EnterReadLock();
  34.       Interlocked.Increment(ref reads);
  35.       File.ReadAllText("data.txt");
  36.       rw.ExitReadLock();
  37.     }
  38.   }
  39.  
  40.   static void Writer()
  41.   {
  42.     while(true)
  43.     {
  44.       rw.EnterWriteLock();
  45.       var w = Interlocked.Increment(ref writes);
  46.       File.WriteAllText("data.txt", "test");
  47.       rw.ExitWriteLock();
  48.     }
  49.   }
  50. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement