Advertisement
Guest User

aaaaaaaaaaaaa

a guest
Nov 24th, 2014
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.81 KB | None | 0 0
  1. using System;
  2. using System.Threading;
  3.  
  4. namespace Racing {
  5.     class RaceConditionExample {
  6.         private const int N = 1000;
  7.         private const int BUFFER_SIZE = 10;
  8.         private double[] buffer;
  9.         private AutoResetEvent signal;
  10.  
  11.         private bool writerNotFinished = true;
  12.  
  13.         public void Run() {
  14.             buffer = new double[BUFFER_SIZE];
  15.             signal = new AutoResetEvent(false);
  16.            
  17.             // start threads
  18.             var t1 = new Thread(Reader); var t2 = new Thread(Writer);
  19.             t1.Start();
  20.             t2.Start();
  21.  
  22.             // wait
  23.             t1.Join();
  24.             t2.Join();
  25.             Console.WriteLine("FEEEEEEEEERTIG");
  26.         }
  27.         void Reader() {
  28.             var readerIndex = 0;
  29.             for (int i = 0; i < N; i++) {
  30.                 if (writerNotFinished) {
  31.                     signal.WaitOne();
  32.                 }
  33.                 Console.WriteLine();
  34.                 Console.WriteLine("buffer[{1}] = {0} and i:{2}", buffer[readerIndex], readerIndex, i);
  35.                 readerIndex = (readerIndex + 1) % BUFFER_SIZE;
  36.             }
  37.         }
  38.         void Writer() {
  39.             var writerIndex = 0;
  40.             for (int i = 0; i < N; i++) {
  41.                 buffer[writerIndex] = (double)i;
  42.                 Console.Write("{0}, ", writerIndex);
  43.                 signal.Set();
  44.                 //Thread.Sleep(0);
  45.                 writerIndex = (writerIndex + 1) % BUFFER_SIZE;
  46.             }
  47.             Console.WriteLine("WRIDDER FEDDIG");
  48.             writerNotFinished = false;
  49.         }
  50.     }
  51.  
  52.     class Program {
  53.         static void Main(string[] args) {
  54.             Console.WriteLine("STAAAAAAAAART");
  55.             RaceConditionExample rce = new RaceConditionExample();
  56.             rce.Run();
  57.         }
  58.     }
  59.  
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement