Skip to content

Instantly share code, notes, and snippets.

@nkoguro
Created June 14, 2020 07:50
Show Gist options
  • Select an option

  • Save nkoguro/a212a14bc6478b68dee5f0790e97ac1f to your computer and use it in GitHub Desktop.

Select an option

Save nkoguro/a212a14bc6478b68dee5f0790e97ac1f to your computer and use it in GitHub Desktop.
(use data.queue)
(use gauche.partcont)
(define queue (make-queue))
(define (make-worker)
(make-thread (lambda ()
(while (dequeue! queue #f)
=> next
(print "==> call next")
(dynamic-wind
(lambda ()
(print "start"))
(lambda ()
(reset
(next)))
(lambda ()
(print "end")))))))
(define (yield)
(shift cont
(enqueue! queue cont)))
(define (main args)
(enqueue! queue (lambda ()
(guard (e (else (print "catch error!!")))
(yield)
(error "err"))))
(while (dequeue! queue #f)
=> next
(print "==> call next")
(reset
(dynamic-wind
(lambda ()
(print "start"))
next
(lambda ()
(print "end")))))
0)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment