You are on page 1of 1

chatsonic

‫ هذا مثال عن الكود في لغة سي شارب لكل من الـ‬Monitor, Mutex, Semaphore ‫ و‬Lock: ### Monitor: ```C# using
System.Threading; class Example { private readonly object _lock = new object(); private int _count = 0;
public void Increment() { lock (_lock) { _count++; } } public void Decrement()
{ lock (_lock) { _count--; } } public int Count { get { lock
(_lock) { return _count; } } } } ``` ### Mutex: ```C# using System.Threading;
class Example { private readonly Mutex _mutex = new Mutex(); private int _count = 0; public void
Increment() { _mutex.WaitOne(); _count++; _mutex.ReleaseMutex(); } public void
Decrement() { _mutex.WaitOne(); _count--; _mutex.ReleaseMutex(); } public int Count
{ get { _mutex.WaitOne(); int count = _count; _mutex.ReleaseMutex();
return count; } } } ``` ### Semaphore: ```C# using System.Threading; class Example { private
readonly Semaphore _semaphore = new Semaphore(1, 1); private int _count = 0; public void Increment()
{ _semaphore.WaitOne(); _count++; _semaphore.Release(); } public void Decrement() {
_semaphore.WaitOne(); _count--; _semaphore.Release(); } public int Count { get {
_semaphore.WaitOne(); int count = _count; _semaphore.Release(); return count; }
} } ``` ### Lock: ```C# using System.Threading; class Example { private readonly object _lock = new
object(); private int _count = 0; public void Increment() { lock (_lock) { _count++;
} } public void Decrement() { lock (_lock) { _count--; } } public int Count
{ get { lock (_lock) { return _count; } } } } ``` ‫يرجى مالحظة أن‬
‫ وأنه يمكن تنفيذ هذه الدوال بعدة طرق مختلفة باستخدام هذه المفاهيم‬،‫هذه األمثلة هي ألغراض التوضيح فقط‬.

You might also like