//
// Copyright (c) 2002
// Ronald Kevin Burton
//
// Z poniższym kodem nie jest związana żadna gwarancja poprawności działania.
// Program został dołączony do książki ".NET CLR. Księga eksperta" w celu
// ilustracji koncepcji i zasad przedstawionych w tej książce. Program może być 
// używany na własne ryzyko.
//
// Przyznaje się prawo do użycia lub kopiowania tego oprogramowania do dowolnego celu
// bez konieczności ponoszenia żadnych opłat pod warunkiem, że powyższe uwagi zostaną 
// zachowane we wszystkich kopiach. Przyznaje się także prawo do modyfikacji kodu
// i dystrybucji zmodyfikowanego kodu pod warunkiem zachowania powyższych uwag
// oraz dołączenia informacji mówiącej o modyfikacji kodu.
//
// 
using System;
using System.Threading;

namespace ThreadSynchonization
{
	class Worker
	{
		private int Fib(int x) 
		{
			return ((x<=1)?1:(Fib(x-1)+Fib(x-2)));
		}
		public void DoWork()
		{
			string item = Convert.ToString(Thread.CurrentThread.Name) + " ";
			for(int i = 0; i < 10; i++)
			{
				Console.WriteLine("Wątek {0} {1} {2}", element, i, Fib(30));
			}
		}
	}

	class Unsynchronized
	{
		static void Main(string[] args)
		{
			Worker wq = new Worker();
			Thread a = new Thread(new ThreadStart(wq.DoWork));
			a.Name = "a";
			Thread b = new Thread(new ThreadStart(wq.DoWork));
			b.Name = "b";
			Thread c = new Thread(new ThreadStart(wq.DoWork));
			c.Name = "c";
			Thread d = new Thread(new ThreadStart(wq.DoWork));
			d.Name = "d";
			Thread e = new Thread(new ThreadStart(wq.DoWork));
			e.Name = "e";

			// Uruchomienie wątków
			a.Start();
			b.Start();
			c.Start();
			d.Start();
			e.Start();

		}
	}
}
