import time

fn work(input chan u32, started chan bool) {
	println('> work started')
	started <- true
	for {
		x := <-input or { break }
		println('> work x: $x')
		time.sleep(50 * time.millisecond)
	}
	println('> work ended')
}

fn main() {
	println('> main start')
	ch := chan u32{cap: 100}
	work_started := chan bool{}
	for x in 0 .. 10 {
		ch <- x
	}
	task := go work(ch, work_started)
	_ := <-work_started

	ch.close()
	// println('> main ch.close called') // the position of this is not deterministic

	task.wait()
	println('> main task was finished')
}
