Skip to content

Commit d7bdc37

Browse files
committed
refactoring
1 parent 7ced806 commit d7bdc37

File tree

1 file changed

+9
-8
lines changed

1 file changed

+9
-8
lines changed

client.rb

+9-8
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
require 'openssl'
22
require 'faraday'
33
require 'async'
4-
require 'async/barrier'
54
require 'async/semaphore'
65

76
OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE
@@ -43,33 +42,35 @@ def collect_sorted(arr)
4342
SEMAPHORE_A = Async::Semaphore.new(3) # максимум 3 одновременных запроса типа A
4443
SEMAPHORE_B = Async::Semaphore.new(2) # ма ксимум 2 одновременных запроса типа B
4544
SEMAPHORE_C = Async::Semaphore.new(1) # максимум 1 запрос типа C
46-
VALID_RESULT = "0bbe9ecf251ef4131dd43e1600742cfb"
47-
VALID_DURATION = 7
45+
EXPECTED_HASH = "0bbe9ecf251ef4131dd43e1600742cfb"
46+
MAX_EXECUTION_TIME = 7
4847

4948
start = Time.now
5049
result = Sync do
5150
ab1 = Async do
51+
b1 = SEMAPHORE_B.async{ b(1) } # так как запросы B выполняются дольше (2 секунды),
52+
# их нужно запускать первыми, чтобы они начали выполняться как можно раньше
53+
# и не блокировали остальные операции в конце
5254
a11 = SEMAPHORE_A.async{ a(11) }
5355
a12 = SEMAPHORE_A.async{ a(12) }
5456
a13 = SEMAPHORE_A.async{ a(13) }
55-
b1 = SEMAPHORE_B.async{ b(1) }
5657

5758
"#{collect_sorted([a11.wait, a12.wait, a13.wait])}-#{b1.wait}"
5859
end
5960

6061
ab2 = Async do
62+
b2 = SEMAPHORE_B.async{ b(2) }
6163
a21 = SEMAPHORE_A.async{ a(21) }
6264
a22 = SEMAPHORE_A.async{ a(22) }
6365
a23 = SEMAPHORE_A.async{ a(23) }
64-
b2 = SEMAPHORE_B.async{ b(2) }
6566
"#{collect_sorted([a21.wait, a22.wait, a23.wait])}-#{b2.wait}"
6667
end
6768

6869
ab3 = Async do
70+
b3 = SEMAPHORE_B.async{ b(3) }
6971
a31 = SEMAPHORE_A.async{ a(31) }
7072
a32 = SEMAPHORE_A.async{ a(32) }
7173
a33 = SEMAPHORE_A.async{ a(33) }
72-
b3 = SEMAPHORE_B.async{ b(3) }
7374
"#{collect_sorted([a31.wait, a32.wait, a33.wait])}-#{b3.wait}"
7475
end
7576

@@ -85,6 +86,6 @@ def collect_sorted(arr)
8586

8687
total_time = Time.now - start
8788
puts "FINISHED in #{total_time}s."
88-
puts "VALID DURATION: #{total_time < VALID_DURATION}"
89+
puts "VALID DURATION: #{total_time < MAX_EXECUTION_TIME}"
8990
puts "RESULT = #{result}"
90-
puts "VALID: #{result==VALID_RESULT}"
91+
puts "VALID: #{result==EXPECTED_HASH}"

0 commit comments

Comments
 (0)