私があなたを正しく理解しているなら、あなたは送信が100msごとに発生することを望みますが、そのために別のスレッドを作成することは望まないでしょう(そしてThread.sleep
アクターの内部は実際にフローをブロックするかもしれません)。あなたが使用することができますreactWithin
:
import java.util.Date
import math.max
def some_method = {
var last_transmission_time = 0
loop {
val current_time = (new Date).getTime
reactWithin(max(0, last_transmission_time + 100 - current_time)) {
// actor reaction cases
case TIMEOUT => {
// Transmit something
last_transmission_time = (new Date).getTime
}
}
}
}
last_transmission_time
送信が最後に行われたときに保存されます。反応タイムアウトは、現在時刻が最終送信時間+100msのときにTIMEOUTが発生するように計算されます。
タイムアウトが発生した場合は、最後の送信から100ミリ秒以上経過したことを意味するため、別の送信を呼び出す必要があります。
反応ケース自体に時間がかかる場合は、簡単な解決策はありませんが、別のスレッドを作成します。
私はあなたの問題を完全に理解しているかどうかわからないので、コードを試しませんでした。