Skip to content

Instantly share code, notes, and snippets.

@jeremytregunna
Created November 29, 2011 22:12
Show Gist options
  • Save jeremytregunna/1406811 to your computer and use it in GitHub Desktop.
Save jeremytregunna/1406811 to your computer and use it in GitHub Desktop.
/* Simple producer-consumer example using coroutines */
// Our counter
counter := 0
// Indicate we're done
done := false
// Increment a counter by n up to y
produce := method(n, y,
loop(
tmp := counter + n
if(tmp > y,
done = true;
break
)
counter = tmp
yield
)
)
// Display our progress
consume := method(
loop(
if(done, break)
"Counter = #{counter}" interpolate println
r append(counter)
yield
)
)
r := list
coroDo(produce(3, 10))
consume
r println
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment