<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">https://github.com/socketry/async/commit/8f590415c08943372e0227f01d3c32e92dbcbed0
https://github.com/socketry/async/issues/218

From 8f590415c08943372e0227f01d3c32e92dbcbed0 Mon Sep 17 00:00:00 2001
From: Samuel Williams &lt;samuel.williams@oriontransfer.co.nz&gt;
Date: Sun, 12 Mar 2023 20:33:48 +1300
Subject: [PATCH] Improve robustness of test, fixes #218.

--- a/spec/async/semaphore_spec.rb
+++ b/spec/async/semaphore_spec.rb
@@ -62,7 +62,7 @@
 			3.times.map do |i|
 				semaphore.async do |task|
 					order &lt;&lt; i
-					task.sleep(0.1)
+					task.yield
 					order &lt;&lt; i
 				end
 			end.collect(&amp;:result)
@@ -72,17 +72,22 @@
 		
 		it 'allows tasks to execute concurrently' do
 			semaphore = Async::Semaphore.new(3)
-			order = []
+			concurrency = 0
+			latch = Async::Condition.new
 			
 			3.times.map do |i|
 				semaphore.async do |task|
-					order &lt;&lt; i
-					task.sleep(0.1)
-					order &lt;&lt; i
+					concurrency += 1
+					
+					if concurrency == 3
+						latch.signal
+					else
+						latch.wait
+					end
 				end
-			end.collect(&amp;:result)
+			end.each(&amp;:wait)
 			
-			expect(order).to be == [0, 1, 2, 0, 1, 2]
+			expect(concurrency).to be == 3
 		end
 	end
 	

</pre></body></html>