Slide 38
Slide 38 text
Process simula on
Runs concurrently but does not require Thread s per process
Thousands of Producers and Consumers
n = 2000 #
2000
producers = Array.new(n) do
Concurrent
Promises.future_on(:fast, 0, channel2, &produce).run
end
receivers = Array.new(n) do
Concurrent
Promises.future_on(:fast, 0, channel2, &receive).run
end
Concurrent.global_fast_executor.length
#
8
receivers.each(&:wait) # all finish successfully
receivers[0
10].map(&:value!)
#
[263, 264, 251, 264, 265, 270, 264, 264, 265, 265, 263]
receivers.map(&:value!).reduce(&:+)
#
110000
n * 55 #
110000
38 / 50