> On 25 Sep 2018, at 05:33, James Roper <ja...@lightbend.com> wrote:
> 
> Hi Pavel,
> 
> <snip>
> 
> As for the MutexExecutor itself, that was mostly written by Viktor Klang, and 
> I believe he wrote it based on his experience implementing similar constructs 
> for Akka mailboxes. There is one major problem with it that I'm aware of - 
> it's not fair on the underlying executor. If you submit tasks at an equal or 
> higher rate than can be processed by a single thread, the executor will never 
> return the thread it uses to the underlying executor. I don't think that's 
> hard to fix - we could limit the number of sequential tasks it does on a 
> thread before resubmitting to the underlying executor.
> 
> A slightly different incarnation of this problem is when each task invoked 
> resubmits another task, for example, using the current reactive streams API, 
> if I did ReactiveStreams.generate(() -> "foo").forEach(System.out::println), 
> that is by design effectively an infinite loop that prints out foo, but being 
> an asynchronous API it shouldn't actually be an infinite loop, it should 
> return the thread back to the underlying executor at least periodically to 
> allow that thread to be used for other tasks queued on the executor, but it 
> doesn't do that.
> 
> But this issue (and some similar issues that may exist) we haven't begun to 
> consider addressing, primarily because fixing it requires selecting some 
> magic numbers for limits on work to do, and they can't be selected without 
> some realistic benchmarks being created to tune them to, and we're just not 
> ready to take this implementation to that level, it could change very 
> significantly which would change all the assumptions before it's ready to be 
> used.
> 

James, thanks for such a detailed explanation! Right now I'm mostly interested
in mechanics of this executor. I think this discussion deserves a separate
thread on concurrency-interest mailing list. What do you think? Once I've
started the thread there, I will get get back here with the link to it
(for the interested parties' convenience).

-Pavel

Reply via email to