Mega Code Archive

 
Categories / Visual C++ .NET / Thread
 

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(); }