Saturday, May 30, 2009

Interprocess synchronization (safe threading)

// Interprocess synchronization (safe threading)

using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;

namespace ConsoleApplication12
{
class Program
{
static object thisLock = new object();
static int z = 0;
private static void ThrStart()
{
for (int i = 0; i < 10000; i++)
{
lock (thisLock)
{
z++;
Console.WriteLine(z);
}
}
}

private static void ThrStart2()
{
for (int i = 0; i < 10000; i++)
{
Monitor.Enter(thisLock);
z++;
Console.WriteLine(z);
Monitor.Exit(thisLock);
}
}

static Mutex mutex = new Mutex();
private static void ThrStart3()
{
for (int i = 0; i < 10000; i++)
{
mutex.WaitOne();
z++;
Console.WriteLine(z);
mutex.ReleaseMutex();
}
}


static void Main(string[] args)
{
Thread t1 = new Thread(new ThreadStart(ThrStart));
Thread t2 = new Thread(new ThreadStart(ThrStart));
t1.Start();
t2.Start();
t1.Join();
t2.Join();

t1 = new Thread(new ThreadStart(ThrStart2));
t2 = new Thread(new ThreadStart(ThrStart2));
t1.Start();
t2.Start();
t1.Join();
t2.Join();

t1 = new Thread(new ThreadStart(ThrStart3));
t2 = new Thread(new ThreadStart(ThrStart3));
t1.Start();
t2.Start();
t1.Join();
t2.Join();
}
}
}

No comments:

Post a Comment