Mercurial > pub > ImplabNet
comparison Implab/Promise.cs @ 80:4f20870d0816 v2
added memory barriers
| author | cin |
|---|---|
| date | Fri, 26 Sep 2014 03:32:34 +0400 |
| parents | c761fc982e1d |
| children | daffa72a1cec |
comparison
equal
deleted
inserted
replaced
| 79:05e6468f066f | 80:4f20870d0816 |
|---|---|
| 140 throw new InvalidOperationException("Can't complete transition when the object isn't in the transitional state"); | 140 throw new InvalidOperationException("Can't complete transition when the object isn't in the transitional state"); |
| 141 } | 141 } |
| 142 | 142 |
| 143 void WaitTransition() { | 143 void WaitTransition() { |
| 144 while (m_state == TRANSITIONAL_STATE) { | 144 while (m_state == TRANSITIONAL_STATE) { |
| 145 /* noop */ | 145 Thread.MemoryBarrier(); |
| 146 } | 146 } |
| 147 } | 147 } |
| 148 | 148 |
| 149 public bool IsResolved { | 149 public bool IsResolved { |
| 150 get { | 150 get { |
| 151 Thread.MemoryBarrier(); | |
| 151 return m_state > 1; | 152 return m_state > 1; |
| 152 } | 153 } |
| 153 } | 154 } |
| 154 | 155 |
| 155 public bool IsCancelled { | 156 public bool IsCancelled { |
| 156 get { | 157 get { |
| 158 Thread.MemoryBarrier(); | |
| 157 return m_state == CANCELLED_STATE; | 159 return m_state == CANCELLED_STATE; |
| 158 } | 160 } |
| 159 } | 161 } |
| 160 | 162 |
| 161 public Type PromiseType { | 163 public Type PromiseType { |
