Class: Concurrent::RubyExecutorService
Relationships & Source Files | |
Extension / Inclusion / Inheritance Descendants | |
Subclasses:
|
|
Super Chains via Extension / Inclusion / Inheritance | |
Class Chain:
|
|
Instance Chain:
|
|
Inherits: |
Concurrent::AbstractExecutorService
|
Defined in: | lib/concurrent-ruby/concurrent/executor/ruby_executor_service.rb |
Constant Summary
Class Method Summary
- .new(*args, &block) ⇒ RubyExecutorService constructor
AbstractExecutorService
- Inherited
.new | Create a new thread pool. |
Instance Attribute Summary
- #fallback_policy ⇒ Symbol readonly
- #ns_running? ⇒ Boolean readonly private
- #ns_shutdown? ⇒ Boolean readonly private
- #ns_shuttingdown? ⇒ Boolean readonly private
AbstractExecutorService
- Inherited
#auto_terminate= |
|
#auto_terminate? | Is the executor auto-terminate when the application exits? |
#fallback_policy, #name, | |
#running? | Is the executor running? |
#shutdown | Begin an orderly shutdown. |
#shutdown? | Is the executor shutdown? |
#shuttingdown? | Is the executor shuttingdown? |
#ns_auto_terminate? |
ExecutorService
- Included
#can_overflow? | Does the task queue have a maximum size? |
#serialized? | Does this executor guarantee serialization of its operations? |
Instance Method Summary
-
#<<(task) ⇒ self
Submit a task to the executor for asynchronous processing.
-
#auto_terminate=(value) ⇒ Boolean
deprecated
Deprecated.
Has no effect
-
#auto_terminate? ⇒ Boolean
Is the executor auto-terminate when the application exits?
-
#can_overflow? ⇒ Boolean
Does the task queue have a maximum size?
-
#kill
Begin an immediate shutdown.
-
#post(*args) { ... } ⇒ Boolean
Submit a task to the executor for asynchronous processing.
-
#running? ⇒ Boolean
Is the executor running?
-
#serialized? ⇒ Boolean
Does this executor guarantee serialization of its operations?
-
#shutdown
Begin an orderly shutdown.
-
#shutdown? ⇒ Boolean
Is the executor shutdown?
-
#shuttingdown? ⇒ Boolean
Is the executor shuttingdown?
-
#wait_for_termination(timeout = nil) ⇒ Boolean
Block until executor shutdown is complete or until
timeout
seconds have passed. - #ns_shutdown_execution private
- #stop_event private
- #stopped_event private
AbstractExecutorService
- Inherited
#<< | Submit a task to the executor for asynchronous processing. |
#can_overflow? | Does the task queue have a maximum size? |
#kill | Begin an immediate shutdown. |
#post | Submit a task to the executor for asynchronous processing. |
#serialized? | Does this executor guarantee serialization of its operations? |
#to_s, | |
#wait_for_termination | Block until executor shutdown is complete or until |
#fallback_action | Returns an action which executes the #fallback_policy once the queue size reaches |
#ns_execute, | |
#ns_kill_execution | Callback method called when the executor has been killed. |
#ns_shutdown_execution | Callback method called when an orderly shutdown has completed. |
Concern::Deprecation
- Included
ExecutorService
- Included
#<< | Submit a task to the executor for asynchronous processing. |
#post | Submit a task to the executor for asynchronous processing. |
Concern::Logging
- Included
#log | Logs through global_logger, it can be overridden by setting @logger. |
Synchronization::LockableObject
- Inherited
Constructor Details
.new(*args, &block) ⇒ RubyExecutorService
# File 'lib/concurrent-ruby/concurrent/executor/ruby_executor_service.rb', line 11
def initialize(*args, &block) super @StopEvent = Event.new @StoppedEvent = Event.new end
Instance Attribute Details
#fallback_policy ⇒ Symbol
(readonly)
# File 'lib/concurrent-ruby/concurrent/executor/ruby_executor_service.rb', line 8
class RubyExecutorService < AbstractExecutorService safe_initialization! def initialize(*args, &block) super @StopEvent = Event.new @StoppedEvent = Event.new end def post(*args, &task) raise ArgumentError.new('no block given') unless block_given? deferred_action = synchronize { if running? ns_execute(*args, &task) else fallback_action(*args, &task) end } if deferred_action deferred_action.call else true end end def shutdown synchronize do break unless running? stop_event.set ns_shutdown_execution end true end def kill synchronize do break if shutdown? stop_event.set ns_kill_execution stopped_event.set end true end def wait_for_termination(timeout = nil) stopped_event.wait(timeout) end private def stop_event @StopEvent end def stopped_event @StoppedEvent end def ns_shutdown_execution stopped_event.set end def ns_running? !stop_event.set? end def ns_shuttingdown? !(ns_running? || ns_shutdown?) end def ns_shutdown? stopped_event.set? end end
#ns_running? ⇒ Boolean
(readonly, private)
[ GitHub ]
# File 'lib/concurrent-ruby/concurrent/executor/ruby_executor_service.rb', line 70
def ns_running? !stop_event.set? end
#ns_shutdown? ⇒ Boolean
(readonly, private)
[ GitHub ]
# File 'lib/concurrent-ruby/concurrent/executor/ruby_executor_service.rb', line 78
def ns_shutdown? stopped_event.set? end
#ns_shuttingdown? ⇒ Boolean
(readonly, private)
[ GitHub ]
# File 'lib/concurrent-ruby/concurrent/executor/ruby_executor_service.rb', line 74
def ns_shuttingdown? !(ns_running? || ns_shutdown?) end
Instance Method Details
#<<(task) ⇒ self
Submit a task to the executor for asynchronous processing.
# File 'lib/concurrent-ruby/concurrent/executor/ruby_executor_service.rb', line 8
class RubyExecutorService < AbstractExecutorService safe_initialization! def initialize(*args, &block) super @StopEvent = Event.new @StoppedEvent = Event.new end def post(*args, &task) raise ArgumentError.new('no block given') unless block_given? deferred_action = synchronize { if running? ns_execute(*args, &task) else fallback_action(*args, &task) end } if deferred_action deferred_action.call else true end end def shutdown synchronize do break unless running? stop_event.set ns_shutdown_execution end true end def kill synchronize do break if shutdown? stop_event.set ns_kill_execution stopped_event.set end true end def wait_for_termination(timeout = nil) stopped_event.wait(timeout) end private def stop_event @StopEvent end def stopped_event @StoppedEvent end def ns_shutdown_execution stopped_event.set end def ns_running? !stop_event.set? end def ns_shuttingdown? !(ns_running? || ns_shutdown?) end def ns_shutdown? stopped_event.set? end end
#auto_terminate=(value) ⇒ Boolean
Has no effect
Set
the auto-terminate behavior for this executor.
# File 'lib/concurrent-ruby/concurrent/executor/ruby_executor_service.rb', line 8
class RubyExecutorService < AbstractExecutorService safe_initialization! def initialize(*args, &block) super @StopEvent = Event.new @StoppedEvent = Event.new end def post(*args, &task) raise ArgumentError.new('no block given') unless block_given? deferred_action = synchronize { if running? ns_execute(*args, &task) else fallback_action(*args, &task) end } if deferred_action deferred_action.call else true end end def shutdown synchronize do break unless running? stop_event.set ns_shutdown_execution end true end def kill synchronize do break if shutdown? stop_event.set ns_kill_execution stopped_event.set end true end def wait_for_termination(timeout = nil) stopped_event.wait(timeout) end private def stop_event @StopEvent end def stopped_event @StoppedEvent end def ns_shutdown_execution stopped_event.set end def ns_running? !stop_event.set? end def ns_shuttingdown? !(ns_running? || ns_shutdown?) end def ns_shutdown? stopped_event.set? end end
#auto_terminate? ⇒ Boolean
Is the executor auto-terminate when the application exits?
# File 'lib/concurrent-ruby/concurrent/executor/ruby_executor_service.rb', line 8
class RubyExecutorService < AbstractExecutorService safe_initialization! def initialize(*args, &block) super @StopEvent = Event.new @StoppedEvent = Event.new end def post(*args, &task) raise ArgumentError.new('no block given') unless block_given? deferred_action = synchronize { if running? ns_execute(*args, &task) else fallback_action(*args, &task) end } if deferred_action deferred_action.call else true end end def shutdown synchronize do break unless running? stop_event.set ns_shutdown_execution end true end def kill synchronize do break if shutdown? stop_event.set ns_kill_execution stopped_event.set end true end def wait_for_termination(timeout = nil) stopped_event.wait(timeout) end private def stop_event @StopEvent end def stopped_event @StoppedEvent end def ns_shutdown_execution stopped_event.set end def ns_running? !stop_event.set? end def ns_shuttingdown? !(ns_running? || ns_shutdown?) end def ns_shutdown? stopped_event.set? end end
#can_overflow? ⇒ Boolean
Does the task queue have a maximum size?
# File 'lib/concurrent-ruby/concurrent/executor/ruby_executor_service.rb', line 8
class RubyExecutorService < AbstractExecutorService safe_initialization! def initialize(*args, &block) super @StopEvent = Event.new @StoppedEvent = Event.new end def post(*args, &task) raise ArgumentError.new('no block given') unless block_given? deferred_action = synchronize { if running? ns_execute(*args, &task) else fallback_action(*args, &task) end } if deferred_action deferred_action.call else true end end def shutdown synchronize do break unless running? stop_event.set ns_shutdown_execution end true end def kill synchronize do break if shutdown? stop_event.set ns_kill_execution stopped_event.set end true end def wait_for_termination(timeout = nil) stopped_event.wait(timeout) end private def stop_event @StopEvent end def stopped_event @StoppedEvent end def ns_shutdown_execution stopped_event.set end def ns_running? !stop_event.set? end def ns_shuttingdown? !(ns_running? || ns_shutdown?) end def ns_shutdown? stopped_event.set? end end
#kill
Begin an immediate shutdown. In-progress tasks will be allowed to complete but enqueued tasks will be dismissed and no new tasks will be accepted. Has no additional effect if the thread pool is not running.
# File 'lib/concurrent-ruby/concurrent/executor/ruby_executor_service.rb', line 42
class RubyExecutorService < AbstractExecutorService safe_initialization! def initialize(*args, &block) super @StopEvent = Event.new @StoppedEvent = Event.new end def post(*args, &task) raise ArgumentError.new('no block given') unless block_given? deferred_action = synchronize { if running? ns_execute(*args, &task) else fallback_action(*args, &task) end } if deferred_action deferred_action.call else true end end def shutdown synchronize do break unless running? stop_event.set ns_shutdown_execution end true end def kill synchronize do break if shutdown? stop_event.set ns_kill_execution stopped_event.set end true end def wait_for_termination(timeout = nil) stopped_event.wait(timeout) end private def stop_event @StopEvent end def stopped_event @StoppedEvent end def ns_shutdown_execution stopped_event.set end def ns_running? !stop_event.set? end def ns_shuttingdown? !(ns_running? || ns_shutdown?) end def ns_shutdown? stopped_event.set? end end
#ns_shutdown_execution (private)
[ GitHub ]# File 'lib/concurrent-ruby/concurrent/executor/ruby_executor_service.rb', line 66
def ns_shutdown_execution stopped_event.set end
#post(*args) { ... } ⇒ Boolean
Submit a task to the executor for asynchronous processing.
# File 'lib/concurrent-ruby/concurrent/executor/ruby_executor_service.rb', line 17
class RubyExecutorService < AbstractExecutorService safe_initialization! def initialize(*args, &block) super @StopEvent = Event.new @StoppedEvent = Event.new end def post(*args, &task) raise ArgumentError.new('no block given') unless block_given? deferred_action = synchronize { if running? ns_execute(*args, &task) else fallback_action(*args, &task) end } if deferred_action deferred_action.call else true end end def shutdown synchronize do break unless running? stop_event.set ns_shutdown_execution end true end def kill synchronize do break if shutdown? stop_event.set ns_kill_execution stopped_event.set end true end def wait_for_termination(timeout = nil) stopped_event.wait(timeout) end private def stop_event @StopEvent end def stopped_event @StoppedEvent end def ns_shutdown_execution stopped_event.set end def ns_running? !stop_event.set? end def ns_shuttingdown? !(ns_running? || ns_shutdown?) end def ns_shutdown? stopped_event.set? end end
#running? ⇒ Boolean
Is the executor running?
# File 'lib/concurrent-ruby/concurrent/executor/ruby_executor_service.rb', line 8
class RubyExecutorService < AbstractExecutorService safe_initialization! def initialize(*args, &block) super @StopEvent = Event.new @StoppedEvent = Event.new end def post(*args, &task) raise ArgumentError.new('no block given') unless block_given? deferred_action = synchronize { if running? ns_execute(*args, &task) else fallback_action(*args, &task) end } if deferred_action deferred_action.call else true end end def shutdown synchronize do break unless running? stop_event.set ns_shutdown_execution end true end def kill synchronize do break if shutdown? stop_event.set ns_kill_execution stopped_event.set end true end def wait_for_termination(timeout = nil) stopped_event.wait(timeout) end private def stop_event @StopEvent end def stopped_event @StoppedEvent end def ns_shutdown_execution stopped_event.set end def ns_running? !stop_event.set? end def ns_shuttingdown? !(ns_running? || ns_shutdown?) end def ns_shutdown? stopped_event.set? end end
#serialized? ⇒ Boolean
Does this executor guarantee serialization of its operations?
# File 'lib/concurrent-ruby/concurrent/executor/ruby_executor_service.rb', line 8
class RubyExecutorService < AbstractExecutorService safe_initialization! def initialize(*args, &block) super @StopEvent = Event.new @StoppedEvent = Event.new end def post(*args, &task) raise ArgumentError.new('no block given') unless block_given? deferred_action = synchronize { if running? ns_execute(*args, &task) else fallback_action(*args, &task) end } if deferred_action deferred_action.call else true end end def shutdown synchronize do break unless running? stop_event.set ns_shutdown_execution end true end def kill synchronize do break if shutdown? stop_event.set ns_kill_execution stopped_event.set end true end def wait_for_termination(timeout = nil) stopped_event.wait(timeout) end private def stop_event @StopEvent end def stopped_event @StoppedEvent end def ns_shutdown_execution stopped_event.set end def ns_running? !stop_event.set? end def ns_shuttingdown? !(ns_running? || ns_shutdown?) end def ns_shutdown? stopped_event.set? end end
#shutdown
Begin an orderly shutdown. Tasks already in the queue will be executed, but no new tasks will be accepted. Has no additional effect if the thread pool is not running.
# File 'lib/concurrent-ruby/concurrent/executor/ruby_executor_service.rb', line 33
class RubyExecutorService < AbstractExecutorService safe_initialization! def initialize(*args, &block) super @StopEvent = Event.new @StoppedEvent = Event.new end def post(*args, &task) raise ArgumentError.new('no block given') unless block_given? deferred_action = synchronize { if running? ns_execute(*args, &task) else fallback_action(*args, &task) end } if deferred_action deferred_action.call else true end end def shutdown synchronize do break unless running? stop_event.set ns_shutdown_execution end true end def kill synchronize do break if shutdown? stop_event.set ns_kill_execution stopped_event.set end true end def wait_for_termination(timeout = nil) stopped_event.wait(timeout) end private def stop_event @StopEvent end def stopped_event @StoppedEvent end def ns_shutdown_execution stopped_event.set end def ns_running? !stop_event.set? end def ns_shuttingdown? !(ns_running? || ns_shutdown?) end def ns_shutdown? stopped_event.set? end end
#shutdown? ⇒ Boolean
Is the executor shutdown?
# File 'lib/concurrent-ruby/concurrent/executor/ruby_executor_service.rb', line 8
class RubyExecutorService < AbstractExecutorService safe_initialization! def initialize(*args, &block) super @StopEvent = Event.new @StoppedEvent = Event.new end def post(*args, &task) raise ArgumentError.new('no block given') unless block_given? deferred_action = synchronize { if running? ns_execute(*args, &task) else fallback_action(*args, &task) end } if deferred_action deferred_action.call else true end end def shutdown synchronize do break unless running? stop_event.set ns_shutdown_execution end true end def kill synchronize do break if shutdown? stop_event.set ns_kill_execution stopped_event.set end true end def wait_for_termination(timeout = nil) stopped_event.wait(timeout) end private def stop_event @StopEvent end def stopped_event @StoppedEvent end def ns_shutdown_execution stopped_event.set end def ns_running? !stop_event.set? end def ns_shuttingdown? !(ns_running? || ns_shutdown?) end def ns_shutdown? stopped_event.set? end end
#shuttingdown? ⇒ Boolean
Is the executor shuttingdown?
# File 'lib/concurrent-ruby/concurrent/executor/ruby_executor_service.rb', line 8
class RubyExecutorService < AbstractExecutorService safe_initialization! def initialize(*args, &block) super @StopEvent = Event.new @StoppedEvent = Event.new end def post(*args, &task) raise ArgumentError.new('no block given') unless block_given? deferred_action = synchronize { if running? ns_execute(*args, &task) else fallback_action(*args, &task) end } if deferred_action deferred_action.call else true end end def shutdown synchronize do break unless running? stop_event.set ns_shutdown_execution end true end def kill synchronize do break if shutdown? stop_event.set ns_kill_execution stopped_event.set end true end def wait_for_termination(timeout = nil) stopped_event.wait(timeout) end private def stop_event @StopEvent end def stopped_event @StoppedEvent end def ns_shutdown_execution stopped_event.set end def ns_running? !stop_event.set? end def ns_shuttingdown? !(ns_running? || ns_shutdown?) end def ns_shutdown? stopped_event.set? end end
#stop_event (private)
[ GitHub ]# File 'lib/concurrent-ruby/concurrent/executor/ruby_executor_service.rb', line 58
def stop_event @StopEvent end
#stopped_event (private)
[ GitHub ]# File 'lib/concurrent-ruby/concurrent/executor/ruby_executor_service.rb', line 62
def stopped_event @StoppedEvent end
#wait_for_termination(timeout = nil) ⇒ Boolean
# File 'lib/concurrent-ruby/concurrent/executor/ruby_executor_service.rb', line 52
class RubyExecutorService < AbstractExecutorService safe_initialization! def initialize(*args, &block) super @StopEvent = Event.new @StoppedEvent = Event.new end def post(*args, &task) raise ArgumentError.new('no block given') unless block_given? deferred_action = synchronize { if running? ns_execute(*args, &task) else fallback_action(*args, &task) end } if deferred_action deferred_action.call else true end end def shutdown synchronize do break unless running? stop_event.set ns_shutdown_execution end true end def kill synchronize do break if shutdown? stop_event.set ns_kill_execution stopped_event.set end true end def wait_for_termination(timeout = nil) stopped_event.wait(timeout) end private def stop_event @StopEvent end def stopped_event @StoppedEvent end def ns_shutdown_execution stopped_event.set end def ns_running? !stop_event.set? end def ns_shuttingdown? !(ns_running? || ns_shutdown?) end def ns_shutdown? stopped_event.set? end end