.


:




:

































 

 

 

 


, ReleaseMutex (), .




Public void ReleaseMutex()

ReleaseMutex () , , .

WaitOne () ReleaseMutex () , .

Mutex myMtx = new Mutex();

//...

myMtx.WaitOne(); // // .

myMtx.ReleaseMutex(); //

WaitOne () , . ReleaseMutex () . .

. IncThreadn DecThread, : SharedRes. Count. IncThread SharedRes. Count , DecThread . SharedRes. Count Mtx, SharedRes.

// .

Using System;

Using System.Threading;

// ( Count),

// (Mtx), . class SharedRes {

public static int Count = 0;

public static Mutex Mtx = new Mutex();

}

// SharedRes.Count , class IncThread { int num;

Public Thread Thrd;

public IncThread(string name, int n) {

Thrd = new Thread(this.Run); num = n;

Thrd.Name = name;

Thrd.Start();

}

// , void Run() {

Console.WriteLine(Thrd.Name + " .");

// .

SharedRes.Mtx.WaitOne();

Console.WriteLine(Thrd.Name + " ."); do {

Thread.Sleep (500);

SharedRes.Count++;

Console.WriteLine(" " + Thrd.Name +

", SharedRes.Count = " + SharedRes.Count);

Num;

} while(num > 0);

Console.WriteLine(Thrd.Name + " .");

// .

SharedRes.Mtx.ReleaseMutex();

}

}

// SharedRes.Count , class DecThread { int num;

Public Thread Thrd;

public DecThread(string name, int n) {

Thrd = new Thread(new ThreadStart(this.Run)); num = n;

Thrd.Name = name;

Thrd.Start();

}

// , void Run() {

Console.WriteLine(Thrd.Name + " .");

// .

SharedRes.Mtx.WaitOne();

Console.WriteLine(Thrd.Name + " ."); do {

Thread.Sleep(500);

SharedRes.Count;

Console.WriteLine(" " + Thrd.Name +

", SharedRes.Count = " + SharedRes.Count);

Num;

} while(num > 0);

Console.WriteLine(Thrd.Name + " .");

// .

SharedRes.Mtx.ReleaseMutex();

}

}

class MutexDemo {

static void Main() {

// .

IncThread mtl = new IncThread(" ", 5); Thread.Sleep(1); // DecThread mt2 = new DecThread(" ", 5);

Mtl.Thrd.Join();

Mt2.Thrd.Join();

}

}

.

.

.

.

.

, ( SharedRes. Count) , .

, , WaitOne () ReleaseMutex () . , .





:


: 2016-12-03; !; : 418 |


:

:

, , .
==> ...

1904 - | 1550 -


© 2015-2024 lektsii.org - -

: 0.013 .