@@ -119,7 +119,9 @@ public void WhenArgObjectValuesAreSameEqualsTrue()
119119 [ Fact ]
120120 public async Task WhenCallersRunConcurrentlyResultIsFromWinner ( )
121121 {
122- var enter = new ManualResetEvent ( false ) ;
122+ var enter1 = new ManualResetEvent ( false ) ;
123+ var enter2 = new ManualResetEvent ( false ) ;
124+ var factory = new ManualResetEvent ( false ) ;
123125 var resume = new ManualResetEvent ( false ) ;
124126
125127 var atomicFactory = new AtomicFactory < int , int > ( ) ;
@@ -128,9 +130,10 @@ public async Task WhenCallersRunConcurrentlyResultIsFromWinner()
128130
129131 Task < int > first = Task . Run ( ( ) =>
130132 {
133+ enter1 . Set ( ) ;
131134 return atomicFactory . GetValue ( 1 , k =>
132135 {
133- enter . Set ( ) ;
136+ factory . Set ( ) ;
134137 resume . WaitOne ( ) ;
135138
136139 result = 1 ;
@@ -141,9 +144,10 @@ public async Task WhenCallersRunConcurrentlyResultIsFromWinner()
141144
142145 Task < int > second = Task . Run ( ( ) =>
143146 {
147+ enter2 . Set ( ) ;
144148 return atomicFactory . GetValue ( 1 , k =>
145149 {
146- enter . Set ( ) ;
150+ factory . Set ( ) ;
147151 resume . WaitOne ( ) ;
148152
149153 result = 2 ;
@@ -152,7 +156,9 @@ public async Task WhenCallersRunConcurrentlyResultIsFromWinner()
152156 } ) ;
153157 } ) ;
154158
155- enter . WaitOne ( ) ;
159+ enter1 . WaitOne ( ) ;
160+ enter2 . WaitOne ( ) ;
161+ factory . WaitOne ( ) ;
156162 resume . Set ( ) ;
157163
158164 ( await first ) . Should ( ) . Be ( result ) ;
@@ -164,17 +170,20 @@ public async Task WhenCallersRunConcurrentlyResultIsFromWinner()
164170 [ Fact ]
165171 public async Task WhenCallersRunConcurrentlyAndFailExceptionIsPropogated ( )
166172 {
167- var enter = new ManualResetEvent ( false ) ;
173+ var enter1 = new ManualResetEvent ( false ) ;
174+ var enter2 = new ManualResetEvent ( false ) ;
175+ var factory = new ManualResetEvent ( false ) ;
168176 var resume = new ManualResetEvent ( false ) ;
169177
170178 var atomicFactory = new AtomicFactory < int , int > ( ) ;
171179 var throwCount = 0 ;
172180
173181 Task < int > first = Task . Run ( ( ) =>
174182 {
183+ enter1 . Set ( ) ;
175184 return atomicFactory . GetValue ( 1 , k =>
176185 {
177- enter . Set ( ) ;
186+ factory . Set ( ) ;
178187 resume . WaitOne ( ) ;
179188
180189 Interlocked . Increment ( ref throwCount ) ;
@@ -184,17 +193,20 @@ public async Task WhenCallersRunConcurrentlyAndFailExceptionIsPropogated()
184193
185194 Task < int > second = Task . Run ( ( ) =>
186195 {
196+ enter2 . Set ( ) ;
187197 return atomicFactory . GetValue ( 1 , k =>
188198 {
189- enter . Set ( ) ;
199+ factory . Set ( ) ;
190200 resume . WaitOne ( ) ;
191201
192202 Interlocked . Increment ( ref throwCount ) ;
193203 throw new Exception ( ) ;
194204 } ) ;
195205 } ) ;
196206
197- enter . WaitOne ( ) ;
207+ enter1 . WaitOne ( ) ;
208+ enter2 . WaitOne ( ) ;
209+ factory . WaitOne ( ) ;
198210 resume . Set ( ) ;
199211
200212 Func < Task > act1 = ( ) => first ;
@@ -210,32 +222,38 @@ public async Task WhenCallersRunConcurrentlyAndFailExceptionIsPropogated()
210222 [ Fact ]
211223 public async Task WhenCallersRunConcurrentlyAndFailNewCallerStartsClean ( )
212224 {
213- var enter = new ManualResetEvent ( false ) ;
225+ var enter1 = new ManualResetEvent ( false ) ;
226+ var enter2 = new ManualResetEvent ( false ) ;
227+ var factory = new ManualResetEvent ( false ) ;
214228 var resume = new ManualResetEvent ( false ) ;
215229
216230 var atomicFactory = new AtomicFactory < int , int > ( ) ;
217231
218232 Task < int > first = Task . Run ( ( ) =>
219233 {
234+ enter1 . Set ( ) ;
220235 return atomicFactory . GetValue ( 1 , k =>
221236 {
222- enter . Set ( ) ;
237+ factory . Set ( ) ;
223238 resume . WaitOne ( ) ;
224239 throw new Exception ( ) ;
225240 } ) ;
226241 } ) ;
227242
228243 Task < int > second = Task . Run ( ( ) =>
229244 {
245+ enter2 . Set ( ) ;
230246 return atomicFactory . GetValue ( 1 , k =>
231247 {
232- enter . Set ( ) ;
248+ factory . Set ( ) ;
233249 resume . WaitOne ( ) ;
234250 throw new Exception ( ) ;
235251 } ) ;
236252 } ) ;
237253
238- enter . WaitOne ( ) ;
254+ enter1 . WaitOne ( ) ;
255+ enter2 . WaitOne ( ) ;
256+ factory . WaitOne ( ) ;
239257 resume . Set ( ) ;
240258
241259 Func < Task > act1 = ( ) => first ;
0 commit comments