Привет, ЛОР. Решил я таки освоить модель акторов, и вот тут быдлокодовый ШИМ, реализованный на основе scala actors(да, студень, лабы).
class SHIM(max_v:Double, max_u:Double, pump:Pump, delta:Int) extends Actor {
var i:Int=0;
def getPercent(inp:Double):Int=((inp/max_v)*delta).asInstanceOf[Int];
def loop:Unit={
if(i>0){
pump.setU(max_u)
i=i-1
}else{
pump.setU(1.0)
}
}
def act(){
while(true){
receiveWithin(Model.DELTA_T/delta){
case a:Double=>{i=getPercent(a)
if(i>delta) i=delta;
}
case _=> {}
}
loop
}
}
}
В сами акторы не сильно вникал, просто посмотрел доки и решил для себя, что актор - это такой поток с возможностью получения и реакции на сообщения(ну и очередью для организации приема сообщений). А потом обратил внимание на akka, как на лучшую реализацию этих самых акторов для jvm. И в akka для actor'ов отсутствует метод act(), там перегружать надо метод recieve, и делать какие-то действия если нам ничего не пришло такие акторы не могут(так ведь?).
Из всего вышесказанного 2 вопроса: Как реализуется фоновое выполнение задачи с управлением на основе сообщений в akka? И правильно ли я понял что такое actor?
//Критика кода - приветствуется.