Sync By Mutex : Mutex « Thread « Visual C++ .NET






Sync By Mutex

 
#include "stdafx.h"

using namespace System;
using namespace System::Threading;

ref class MyThread
{
    static Mutex ^m = gcnew Mutex(false, "SyncByMutex");
public:
    static void ThreadFunc();
};

void MyThread::ThreadFunc()
{
    Random^ Rand = gcnew Random;

    Thread ^thr = Thread::CurrentThread;

    for (int i = 0; i < 4; i++)
    {
        m->WaitOne();

        Console::WriteLine("{0} Enter - {1}", thr->Name, i);
        Thread::Sleep(Rand->Next(20, 100)); // Simulate Work
        Console::WriteLine("{0} Exit  - {1}", thr->Name, i);
        m->ReleaseMutex();

        Thread::Sleep(Rand->Next(20, 100));
    }
}

int main(int argc, char *argv[])
{
    MyThread ^myThr = gcnew MyThread();

    Thread ^thr1 = gcnew Thread(gcnew ThreadStart(&MyThread::ThreadFunc));
    Thread ^thr2 = gcnew Thread(gcnew ThreadStart(&MyThread::ThreadFunc));

    thr1->Name =
        String::Format("Process {0} - Thread 1", gcnew String(argv[1]));
    thr2->Name =
        String::Format("Process {0} - Thread 2", gcnew String(argv[1]));

    thr1->Start();
    Thread::Sleep(50);
    thr2->Start();
}

   
  








Related examples in the same category