Threadで計算した値が、一定値以上になったらある処理をする、にはどうしたら良いでしょうか。
Threadで外部からデータを約0.01秒毎に受け取っており、そのデータをもとにある計算をしています。
その計算の結果がある一定値以上になったら、別の処理をしたいです。
現状のコードは、ループの中でsleep(0.001)毎に、その結果が一定値以上かをif文で判断し指定の処理をしています。
外部からのデータの計算結果が一定値以上になったことをリアルタイムに反応したいため0.001秒スリープしていますが、ループ分で回しているのでCPUの使用量が多くなってしまいます。
なので、ループの中でsleep秒毎に値をチェックすのではなく、ある値以上になったら次の動作をする、という命令を書きたいです。
rubyで**、ある値がX以上になるまで処理をSTOPしてX以上になったら処理をする、**という命令はどのように書けばいいのでしょうか?
現在のコード
Ruby
1Thread.new do 2 loop{ 3 #外部からデータを受け取っている 4 answer = データの計算結果 5 sleep(0.01) 6 } 7end 8 9#Main処理 10loop{ 11 12 if answer > 100 #一定値以上 13 #一定値以上の場合にする処理 14 end 15 sleep(0.001) 16 17} 18#0.001秒毎にループを回しているのでCPUの使用量が上がってしまう。 19#計算結果にリアルタイムに反応したいためsleepは0.001にしている 20 21
追記
threadはその後も動かし続ける必要があるので、Threadがdeadしたかによって判断するのではなく、別の方法があると助かります。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。