Module: Garcon::RubyExecutor
- Includes:
- Executor
- Included in:
- RubySingleThreadExecutor, ThreadPoolExecutor, TimerSet, TimerTask
- Defined in:
- lib/garcon/task/executor.rb
Constant Summary collapse
- FALLBACK_POLICY =
The set of possible fallback policies that may be set at thread pool creation.
[:abort, :discard, :caller_runs]
Instance Attribute Summary
Attributes included from Executor
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 Executor
#auto_terminate?, #can_overflow?, #serialized?
Instance Method Details
#<<(task) ⇒ self
Submit a task to the executor for asynchronous processing.
171 172 173 174 |
# File 'lib/garcon/task/executor.rb', line 171 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.
217 218 219 220 221 222 223 224 225 |
# File 'lib/garcon/task/executor.rb', line 217 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.
154 155 156 157 158 159 160 161 162 |
# File 'lib/garcon/task/executor.rb', line 154 def post(*args, &task) raise ArgumentError.new('no block given') unless block_given? mutex.synchronize do # If the executor is shut down, reject this task return handle_fallback(*args, &task) unless running? execute(*args, &task) true end end |
#running? ⇒ Boolean
Is the executor running?
180 181 182 |
# File 'lib/garcon/task/executor.rb', line 180 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.
204 205 206 207 208 209 210 211 |
# File 'lib/garcon/task/executor.rb', line 204 def shutdown mutex.synchronize do break unless running? stop_event.set shutdown_execution end true end |
#shutdown? ⇒ Boolean
Is the executor shutdown?
196 197 198 |
# File 'lib/garcon/task/executor.rb', line 196 def shutdown? stopped_event.set? end |
#shuttingdown? ⇒ Boolean
Is the executor shuttingdown?
188 189 190 |
# File 'lib/garcon/task/executor.rb', line 188 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.
239 240 241 |
# File 'lib/garcon/task/executor.rb', line 239 def wait_for_termination(timeout = nil) stopped_event.wait(timeout) end |