reactive-async
reactive-async copied to clipboard
Expressive deterministic concurrency in Scala
Fixes #89 (but see discussion at #89 )
For whenNext without threshold, results must always increase, if input increases. This has to be checked at runtime. Use a table to store previous inputs/outputs. Use #86 on a new...
After merging #107 , there seems to be no use for `whileQuiescentResolveCell` and `whileQuiescentResolveDefault`.
When running the test suite (w.r.t. master or including the proposed changes in PR #40) core/test, I get messages such as: > problem with cell.CellImpl@744a46be; existing value: Success(20), new value:...
- Cells should not run in the "wrong" HandlerPool. - Cells that depend on each other must be in the same HandlerPool. - Rename to HandlerContext. See https://gist.github.com/phaller/a4fade7906bad95a61f24311ace62d66 for details.
pool.onQuiescent(cell) {v => …} Or maybe use Cell.getResult(): Future[V]? This could return if putFinal has been called but pool is still running.
- The callback will be triggered at most once. - Thresholds must be pairwise incompatible. (Check at runtime.)
Calls of whenNext/whenComplete should be stalled until init() returns. Notes: - Maybe on can reuse Cell.tasksActive to track, if init() has returned. - Maybe State.deps could be used as Map[otherCell,...
We talked about adding priorities to tasks/dependencies to improve the performance of evaluations. NextCallbacks and CompleteCallbacks with a high priority should be called earlier. The implementation in https://github.com/JanKoelzer/reactive-async/tree/jan-prio-ThreadPoolExecutor uses a...