concurrent-ruby icon indicating copy to clipboard operation
concurrent-ruby copied to clipboard

Should RubySingleThreadExecutor be marked to be a SerialExecutorService again?

Open meineerde opened this issue 1 year ago • 2 comments

In 455203e, the RubySingleThreadExecutor implementation was updated to use the generic RubyThreadPoolExecutor. With that change, the previously included SerialExecutorService module was removed, resulting in RubySingleThreadExecutor#serialized? now returning false.

I'm wondering if that is actually correct, given that we still have exactly one thread which executes a single task at a time which is pop'ed from the queue serially?

Shouldn't the module be included again, or more generally: shouldn't RubyThreadPoolExecutor#serialized? always return true if its max_threads is <= 1?

meineerde avatar Nov 01 '24 18:11 meineerde

Conversely, in case I'm mistaken and RubySingleThreadExecutor is in fact not serialized?, its documentation should probably be amended to explain why.

meineerde avatar Nov 01 '24 18:11 meineerde

I think you're correct that SerialExecutorService shouldn't have been removed. The Java implementation does include the module: https://github.com/ruby-concurrency/concurrent-ruby/blob/56227a4c3ebdd53b8b0976eb8296ceb7a093496f/lib/concurrent-ruby/concurrent/executor/java_single_thread_executor.rb#L12

Could you make a PR for that?

bensheldon avatar Nov 01 '24 19:11 bensheldon