Over a million developers have joined DZone.

Interprocess Synchronization (safe Threading)

·
Three ways for 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();
        }
    }
}

Topics:

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}