val (results, cont) = consume(reqs.map(_.arg)) for { case (Some(req), Some(res)) <- reqs.map(Some(_)).zipAll(results.map(Some(_)), None, None)
} {
(req.ack, res) match { case (Some(a), _) => a.change(_ => Some(res)) case (None, Exn.Res(_)) => case (None, Exn.Exn(exn)) => failure(exn)
}
}
(rest, cont)
}
@tailrec privatedef main_loop(buffer: List[Option[Request]]): Unit =
proper_list(buffer).getOrElse(mailbox.receive(timeout = timeout)) match { case None :: _ => robust_finish() case msgs => val (rest, cont) = process(msgs) if (cont) main_loop(rest) else robust_finish()
}
/* main methods */
assert(is_active())
def send(arg: A): Unit = request(new Request(arg)) def send_wait(arg: A): Unit = request(new Request(arg, acknowledge = true))
def shutdown(): Unit = {
synchronized { if (is_active()) { active = false; mailbox.send(None) } }
thread.join()
}
}
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.15Bemerkung:
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.