Module: Concurrent::RubyExecutor
- Included in:
- RubySingleThreadExecutor, RubyThreadPoolExecutor, TimerSet, TimerTask
- Defined in:
- lib/concurrent/executor/executor.rb
Instance Method Summary collapse
-
#<<(task) ⇒ self
Submit a task to the executor for asynchronous processing.
-
#kill ⇒ Object
Begin an immediate shutdown.
-
#post(*args) { ... } ⇒ Boolean
Submit a task to the executor for asynchronous processing.
-
#running? ⇒ Boolean
Is the executor running?.
-
#shutdown ⇒ Object
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.
Methods included from Logging
Methods included from Executor
Instance Method Details
#<<(task) ⇒ self
Submit a task to the executor for asynchronous processing.
94 95 96 97 |
# File 'lib/concurrent/executor/executor.rb', line 94 def <<(task) post(&task) self end |
#kill ⇒ Object
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.
146 147 148 149 150 151 152 153 154 |
# File 'lib/concurrent/executor/executor.rb', line 146 def kill mutex.synchronize do break if shutdown? stop_event.set kill_execution stopped_event.set end true end |
#post(*args) { ... } ⇒ Boolean
Submit a task to the executor for asynchronous processing.
78 79 80 81 82 83 84 85 |
# File 'lib/concurrent/executor/executor.rb', line 78 def post(*args, &task) raise ArgumentError.new('no block given') unless block_given? mutex.synchronize do return false unless running? execute(*args, &task) true end end |
#running? ⇒ Boolean
Is the executor running?
104 105 106 |
# File 'lib/concurrent/executor/executor.rb', line 104 def running? ! stop_event.set? end |
#shutdown ⇒ Object
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.
131 132 133 134 135 136 137 138 |
# File 'lib/concurrent/executor/executor.rb', line 131 def shutdown mutex.synchronize do break unless running? stop_event.set shutdown_execution end true end |
#shutdown? ⇒ Boolean
Is the executor shutdown?
122 123 124 |
# File 'lib/concurrent/executor/executor.rb', line 122 def shutdown? stopped_event.set? end |
#shuttingdown? ⇒ Boolean
Is the executor shuttingdown?
113 114 115 |
# File 'lib/concurrent/executor/executor.rb', line 113 def shuttingdown? ! (running? || shutdown?) end |
#wait_for_termination(timeout = nil) ⇒ Boolean
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.
167 168 169 |
# File 'lib/concurrent/executor/executor.rb', line 167 def wait_for_termination(timeout = nil) stopped_event.wait(timeout) end |