Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Threading;
- namespace Racing {
- class RaceConditionExample {
- private const int N = 1000;
- private const int BUFFER_SIZE = 10;
- private double[] buffer;
- private AutoResetEvent signal;
- private bool writerNotFinished = true;
- public void Run() {
- buffer = new double[BUFFER_SIZE];
- signal = new AutoResetEvent(false);
- // start threads
- var t1 = new Thread(Reader); var t2 = new Thread(Writer);
- t1.Start();
- t2.Start();
- // wait
- t1.Join();
- t2.Join();
- Console.WriteLine("FEEEEEEEEERTIG");
- }
- void Reader() {
- var readerIndex = 0;
- for (int i = 0; i < N; i++) {
- if (writerNotFinished) {
- signal.WaitOne();
- }
- Console.WriteLine();
- Console.WriteLine("buffer[{1}] = {0} and i:{2}", buffer[readerIndex], readerIndex, i);
- readerIndex = (readerIndex + 1) % BUFFER_SIZE;
- }
- }
- void Writer() {
- var writerIndex = 0;
- for (int i = 0; i < N; i++) {
- buffer[writerIndex] = (double)i;
- Console.Write("{0}, ", writerIndex);
- signal.Set();
- //Thread.Sleep(0);
- writerIndex = (writerIndex + 1) % BUFFER_SIZE;
- }
- Console.WriteLine("WRIDDER FEDDIG");
- writerNotFinished = false;
- }
- }
- class Program {
- static void Main(string[] args) {
- Console.WriteLine("STAAAAAAAAART");
- RaceConditionExample rce = new RaceConditionExample();
- rce.Run();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement