Class: Concurrent::ImmediateExecutor
- Inherits:
-
AbstractExecutorService
- Object
- Synchronization::LockableObject
- AbstractExecutorService
- Concurrent::ImmediateExecutor
- Defined in:
- lib/concurrent/executor/immediate_executor.rb
Overview
Intended for use primarily in testing and debugging.
An executor service which runs all operations on the current thread, blocking as necessary. Operations are performed in the order they are received and no two operations can be performed simultaneously.
This executor service exists mainly for testing an debugging. When used
it immediately runs every #post
operation on the current thread, blocking
that thread until the operation is complete. This can be very beneficial
during testing because it makes all operations deterministic.
Direct Known Subclasses
Constant Summary
Instance Attribute Summary (collapse)
-
- (Symbol) fallback_policy
inherited
from AbstractExecutorService
readonly
The fallback policy in effect.
Instance Method Summary (collapse)
-
- (self) <<(task)
Submit a task to the executor for asynchronous processing.
-
- (Boolean) can_overflow?
included
from ExecutorService
Does the task queue have a maximum size?.
-
- (ImmediateExecutor) initialize
constructor
Creates a new executor.
-
- (undocumented) log(level, progname, message = nil, &block)
included
from Concern::Logging
Logs through global_logger, it can be overridden by setting @logger.
-
- (Boolean) post(*args) { ... }
Submit a task to the executor for asynchronous processing.
-
- (Boolean) running?
Is the executor running?.
-
- (Boolean) serialized?
included
from SerialExecutorService
Does this executor guarantee serialization of its operations?.
-
- (undocumented) shutdown
(also: #kill)
Begin an orderly shutdown.
-
- (Boolean) shutdown?
Is the executor shutdown?.
-
- (Boolean) shuttingdown?
Is the executor shuttingdown?.
-
- (Boolean) wait_for_termination(timeout = nil)
Block until executor shutdown is complete or until
timeout
seconds have passed.
Constructor Details
- (ImmediateExecutor) initialize
Creates a new executor
21 22 23 |
# File 'lib/concurrent/executor/immediate_executor.rb', line 21 def initialize @stopped = Concurrent::Event.new end |
Instance Attribute Details
- (Symbol) fallback_policy (readonly) Originally defined in class AbstractExecutorService
Returns The fallback policy in effect. Either :abort
, :discard
, or :caller_runs
.
Instance Method Details
- (self) <<(task)
Submit a task to the executor for asynchronous processing.
34 35 36 37 |
# File 'lib/concurrent/executor/immediate_executor.rb', line 34 def <<(task) post(&task) self end |
- (Boolean) can_overflow? Originally defined in module ExecutorService
Always returns false
Does the task queue have a maximum size?
- (undocumented) log(level, progname, message = nil, &block) Originally defined in module Concern::Logging
Logs through Concurrent.global_logger, it can be overridden by setting @logger
- (Boolean) post(*args) { ... }
Submit a task to the executor for asynchronous processing.
26 27 28 29 30 31 |
# File 'lib/concurrent/executor/immediate_executor.rb', line 26 def post(*args, &task) raise ArgumentError.new('no block given') unless block_given? return false unless running? task.call(*args) true end |
- (Boolean) running?
Is the executor running?
40 41 42 |
# File 'lib/concurrent/executor/immediate_executor.rb', line 40 def running? ! shutdown? end |
- (Boolean) serialized? Originally defined in module SerialExecutorService
Always returns true
Does this executor guarantee serialization of its operations?
- (undocumented) shutdown Also known as: kill
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.
55 56 57 58 |
# File 'lib/concurrent/executor/immediate_executor.rb', line 55 def shutdown @stopped.set true end |
- (Boolean) shutdown?
Is the executor shutdown?
50 51 52 |
# File 'lib/concurrent/executor/immediate_executor.rb', line 50 def shutdown? @stopped.set? end |
- (Boolean) shuttingdown?
Is the executor shuttingdown?
45 46 47 |
# File 'lib/concurrent/executor/immediate_executor.rb', line 45 def shuttingdown? false end |
- (Boolean) wait_for_termination(timeout = nil)
Does not initiate shutdown or termination. Either shutdown
or kill
must be called before this method (or on another thread).
Block until executor shutdown is complete or until timeout
seconds have
passed.
62 63 64 |
# File 'lib/concurrent/executor/immediate_executor.rb', line 62 def wait_for_termination(timeout = nil) @stopped.wait(timeout) end |