出力の一時停止と再開
Posted feedbacks - Scheme
Gauche で書いてみました。スレッドプログラミングは初めてなのでいろいろあやしいです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | (use gauche.threads)
(define paused? #f)
(define printer
(make-thread
(lambda ()
(let loop ()
(unless paused?
(display "a")
(flush))
(thread-sleep! 1)
(loop)))))
(define reader
(make-thread
(lambda ()
(let loop ()
(case (read-char)
((#\q)
(thread-terminate! printer))
((#\p)
(set! paused? (not paused?))
(loop))
(else
(loop)))))))
(define (main args)
(sys-system "stty raw")
(unwind-protect
(begin
(thread-start! printer)
(thread-start! reader)
(thread-join! reader))
(sys-system "stty -raw"))
0)
|


nobsun
#6346()
Rating3/3=1.00
起動すると、標準出力に1秒毎に'a'の1文字を出力し続けるプログラムで、 以下の条件を満たすものを「どう書く?」
[ reply ]