Sha256: 17b1e5627a306f211922ac1ee660414e3a0c34642df2582f428eef1fbbe294f8

Contents?: true

Size: 689 Bytes

Versions: 7

Compression:

Stored size: 689 Bytes

Contents

#!/usr/bin/env ruby

# require 'async'; require 'async/queue'

require_relative '../../lib/async'; require_relative '../../lib/async/queue'

Async do |consumer|
	consumer.annotate "consumer"
	condition = Async::Condition.new
	
	producer = Async do |subtask|
		subtask.annotate "subtask"
		
		(1..).each do |value|
			puts "producer yielding"
			subtask.yield # (1) Fiber.yield, (3) Reactor -> producer.resume
			condition.signal(value) # (4) consumer.resume(value)
		end
		
		puts "producer exiting"
	end
	
	value = condition.wait # (2) value = Fiber.yield
	puts "producer.stop"
	producer.stop # (5) [producer is resumed already] producer.stop
	
	puts "consumer exiting"
end

puts "Done."

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
async-1.24.1 examples/stop/condition.rb
async-1.24.0 examples/stop/condition.rb
async-1.23.0 examples/stop/condition.rb
async-1.22.2 examples/stop/condition.rb
async-1.22.1 examples/stop/condition.rb
async-1.22.0 examples/stop/condition.rb
async-1.21.0 examples/stop/condition.rb