11.5.9
using System.Threading; public class CustomMonitor { private readonly object _lock = new object(); private bool _isLocked; public void Enter() { lock (_lock) { while (_isLocked) { Monitor.Wait(_lock); } _isLocked = true; } } public void Exit() { lock (_lock) { _isLocked = false; Monitor.PulseAll(_lock); } } }