#!/usr/bin/env ruby
class Coroutine
def initialize
callcc { |cont|
@resume = cont
return
}
yield(self)
@done.call
end
def switch_to(coroutine)
callcc { |cont|
@resume = cont
coroutine.resume
}
end
def start
callcc { |done|
@done = done
resume
}
end
def resume
@resume.call
end
end
|
Used by: coroutinedemo
|
[ Index ][ Table of Contents ] | Generated by [ source2html ] |