Files

Class/Module Index [+]

Quicksearch

Concurrent::RubySingleThreadExecutor

@!macro single_thread_executor @!macro thread_pool_options @!macro abstract_executor_service_public_api @!visibility private

Public Class Methods

new(opts = {}) click to toggle source

@!macro single_thread_executor_method_initialize

# File lib/concurrent/executor/ruby_single_thread_executor.rb, line 13
def initialize(opts = {})
  super
end

Protected Instance Methods

alive?() click to toggle source

@!visibility private

# File lib/concurrent/executor/ruby_single_thread_executor.rb, line 46
def alive?
  @thread && @thread.alive?
end
execute(*args, &task) click to toggle source

@!visibility private

# File lib/concurrent/executor/ruby_single_thread_executor.rb, line 28
def execute(*args, &task)
  supervise
  @queue << [args, task]
end
kill_execution() click to toggle source

@!visibility private

# File lib/concurrent/executor/ruby_single_thread_executor.rb, line 40
def kill_execution
  @queue.clear
  @thread.kill if alive?
end
new_worker_thread() click to toggle source

@!visibility private

# File lib/concurrent/executor/ruby_single_thread_executor.rb, line 56
def new_worker_thread
  Thread.new do
    Thread.current.abort_on_exception = false
    work
  end
end
ns_initialize(opts) click to toggle source
# File lib/concurrent/executor/ruby_single_thread_executor.rb, line 19
def ns_initialize(opts)
  @queue = Queue.new
  @thread = nil
  @fallback_policy = opts.fetch(:fallback_policy, :discard)
  raise ArgumentError.new("#{@fallback_policy} is not a valid fallback policy") unless FALLBACK_POLICIES.include?(@fallback_policy)
  self.auto_terminate = opts.fetch(:auto_terminate, true)
end
shutdown_execution() click to toggle source

@!visibility private

# File lib/concurrent/executor/ruby_single_thread_executor.rb, line 34
def shutdown_execution
  @queue << :stop
  stopped_event.set unless alive?
end
supervise() click to toggle source

@!visibility private

# File lib/concurrent/executor/ruby_single_thread_executor.rb, line 51
def supervise
  @thread = new_worker_thread unless alive?
end
work() click to toggle source

@!visibility private

# File lib/concurrent/executor/ruby_single_thread_executor.rb, line 64
def work
  loop do
    task = @queue.pop
    break if task == :stop
    begin
      task.last.call(*task.first)
    rescue => ex
      # let it fail
      log DEBUG, ex
    end
  end
  stopped_event.set
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.