| 123456789101112131415161718192021222324252627282930 |
- using System.Threading;
- namespace Top.Api.Util
- {
- public class CountDownLatch
- {
- private int count;
- private EventWaitHandle ewh;
- public CountDownLatch(int count)
- {
- this.count = count;
- this.ewh = new ManualResetEvent(false);
- }
- public void Signal()
- {
- // The last thread to signal also sets the event.
- if (Interlocked.Decrement(ref count) == 0)
- {
- this.ewh.Set();
- }
- }
- public void Wait()
- {
- this.ewh.WaitOne();
- }
- }
- }
|