Mercurial > pub > ImplabNet
view Implab/Parallels/Signal.cs @ 203:4d9830a9bbb8 v2
Added 'Fail' method to RunnableComponent which allows component to move from
Running to Failed state.
Added PollingComponent a timer based runnable component
More tests
Added FailPromise a thin class to wrap exceptions
Fixed error handling in SuccessPromise classes.
author | cin |
---|---|
date | Tue, 18 Oct 2016 17:49:54 +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); } } }