[ruby-list:50592] Fwd: Re: Re: [質問]thread内sleepコール 他threadよりsleep状態からrun状態にされた際、指定時間sleepさせるには?
From:
Toshihiko Ichida <dogatana@...>
Date:
2017-10-03 13:20:40 UTC
List:
ruby-list #50592
こんにちは、市田です。
あて先が投稿者のみになっていたのでメーリングリストへ投げておきます。
今まで気にしていなかったですが、cc に手入力する必要がありましたか?
-------- Forwarded Message --------
Subject: Re: [ruby-list:50591] Re: [質問]thread内sleepコール 他threadよ
りsleep状態からrun状態にされた際、指定時間sleepさせるには?
Date: Tue, 3 Oct 2017 22:11:50 +0900
From: Toshihiko Ichida <dogatana@gmail.com>
To: yamataka@u08.itscom.net
こんにちは、市田です。
On 2017/09/29 19:38, yamataka@u08.itscom.net wrote:
> 但し、exec_thread 再開後は、停止した際から、sleep設定時間の残り時間を
> exec_threadは実行というような感じにしたいのです。
スレッドが stop から run に状態変化する際、sleep の途中からというのは
ないのではと思います。
某 RTOS では sleep(&time) として引数をポインタ渡しして、イベント、
割り込みで sleep 解除された場合、どちらかを判定できるようなっていた
のでそれに相当するものを自前で処理すれば、それなりの動きになります。
exec_thread = Thread.new do
loop do
puts "in exec_thread"
n = 10 # sleep 100s
puts "in exec_thread sleep start #{n}s"
start = Time.now
while n > 0
sleep(0.1)
n -= 0.1
end
puts "in exec_thread sleep end %.1f" % (Time.now - start)
end
end
「刻み」をどうするかは、どれくらい sleep するのかと、期待する時間精度
によって変わるでしょう。
また、元々のsleep時間以上、停止させられていた場合でも、「継続」するの
が良いかどうかは考慮要と思います。
ではでは