view Implab/Parallels/Signal.cs @ 227:8d5de4eb9c2c v2

Reimplemented JsonXmlReader, added support for null values: JSON null values are mapped to empty nodes with 'xsi:nil' attribute set to 'true'
author cin
date Sat, 09 Sep 2017 03:53:13 +0300
parents 471f596b2603
children
line wrap: on
line source

using System;
using System.Threading;

namespace Implab.Parallels {
    /// <summary>
    /// Implements a simple signalling logic using <see cref="Monitor.PulseAll(object)"/>.
    /// </summary>
    public class Signal {
        readonly object m_lock = new object();
        bool m_state;

        public void Set() {
            lock(m_lock) {
                m_state = true;
                Monitor.PulseAll(m_lock);
            }
        }

        public void Wait() {
            lock (m_lock)
                if (!m_state)
                    Monitor.Wait(m_lock);
        }

        public bool Wait(int timeout) {
            lock (m_lock)
                return m_state || Monitor.Wait(m_lock, timeout);
        }
    }
}