Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Threading;
- namespace Multithread_Computation
- {
- class Program
- {
- private static Semaphore _pool;
- static int a = 1,
- b = 3,
- c = 6,
- d = 2,
- e = 4,
- f = 8;
- static int res1, res2, res3, res4;
- static int[] SharedTable = new int[5];
- static int i = 0;
- static void Main(string[] args)
- {
- _pool = new Semaphore(1, 2);
- Thread t1 = new Thread(new ThreadStart(Thread1));
- Thread t2 = new Thread(new ThreadStart(Thread2));
- Thread t3 = new Thread(new ThreadStart(Thread3));
- Thread t4 = new Thread(() => Thread4(t3));
- t1.Start();
- t2.Start();
- t3.Start();
- t1.Join();
- t2.Join();
- t4.Start();
- Thread.Sleep(1000);
- _pool.Release();
- }
- static void Thread1()
- {
- _pool.WaitOne();
- SharedTable[i] = a + b;
- res1 = i;
- i++;
- _pool.Release();
- }
- static void Thread2()
- {
- _pool.WaitOne();
- SharedTable[i] = c + d;
- res2 = i;
- i++;
- _pool.Release();
- }
- static void Thread3()
- {
- _pool.WaitOne();
- SharedTable[i] = e + f;
- res3 = i;
- i++;
- _pool.Release();
- }
- static void Thread4(Thread t3)
- {
- _pool.WaitOne();
- SharedTable[i] = SharedTable[res1] * SharedTable[res2];
- res4 = i;
- i++;
- t3.Join();
- SharedTable[i] = SharedTable[res4] * SharedTable[res3];
- Console.WriteLine("(" + a + " + " + b + ")(" + c + " + " + d + ")(" + e + " + " + f + ")" + " = " + SharedTable[i]);
- _pool.Release();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement