Class: Concurrent::SerializedExecutionDelegator

Inherits:
SimpleDelegator
  • Object
show all
Defined in:
lib/concurrent-ruby/concurrent/executor/serialized_execution_delegator.rb

Overview

A wrapper/delegator for any ‘ExecutorService` that guarantees serialized execution of tasks.

Instance Method Summary collapse

Constructor Details

#initialize(executor) ⇒ SerializedExecutionDelegator

Returns a new instance of SerializedExecutionDelegator.



15
16
17
18
19
# File 'lib/concurrent-ruby/concurrent/executor/serialized_execution_delegator.rb', line 15

def initialize(executor)
  @executor   = executor
  @serializer = SerializedExecution.new
  super(executor)
end

Instance Method Details

#post(*args) { ... } ⇒ Boolean

Submit a task to the executor for asynchronous processing.

Parameters:

  • args (Array)

    zero or more arguments to be passed to the task

Yields:

  • the asynchronous task to perform

Returns:

  • (Boolean)

    ‘true` if the task is queued, `false` if the executor is not running

Raises:

  • (ArgumentError)

    if no task is given



22
23
24
25
26
# File 'lib/concurrent-ruby/concurrent/executor/serialized_execution_delegator.rb', line 22

def post(*args, &task)
  raise ArgumentError.new('no block given') unless block_given?
  return false unless running?
  @serializer.post(@executor, *args, &task)
end