comparison Implab/AbstractEvent.cs @ 248:5cb4826c2c2a v3

Added awaiters to promises Added static methods to Promise Resolve, Reject, All. Updated promise helpers
author cin
date Tue, 30 Jan 2018 01:37:17 +0300
parents eee3e49dd1ff
children 34df34841225
comparison
equal deleted inserted replaced
247:fb70574741a1 248:5cb4826c2c2a
67 Signal(); 67 Signal();
68 } 68 }
69 69
70 protected void WaitTransition() { 70 protected void WaitTransition() {
71 if (m_state == TransitionalState) { 71 if (m_state == TransitionalState) {
72 SpinWait spin; 72 SpinWait spin = new SpinWait();
73 do { 73 do {
74 spin.SpinOnce(); 74 spin.SpinOnce();
75 } while (m_state == TransitionalState); 75 } while (m_state == TransitionalState);
76 } 76 }
77 } 77 }
82 void Signal() { 82 void Signal() {
83 THandler handler; 83 THandler handler;
84 while (TryDequeueHandler(out handler)) 84 while (TryDequeueHandler(out handler))
85 SignalHandler(handler); 85 SignalHandler(handler);
86 } 86 }
87
88 #endregion
89
90 protected abstract Signal GetFulfillSignal();
91
92 #region synchronization traits
93 protected void WaitResult(int timeout) {
94 if (!(IsResolved || GetFulfillSignal().Wait(timeout)))
95 throw new TimeoutException();
96 }
97
98 87
99 #endregion 88 #endregion
100 89
101 #region handlers managment 90 #region handlers managment
102 91