Module: Concurrent
- Defined in:
- lib/concurrent/actor.rb,
lib/concurrent/agent.rb,
lib/concurrent/event.rb,
lib/concurrent/future.rb,
lib/concurrent/promise.rb,
lib/concurrent/version.rb,
lib/concurrent/contract.rb,
lib/concurrent/runnable.rb,
lib/concurrent/utilities.rb,
lib/concurrent/obligation.rb,
lib/concurrent/supervisor.rb,
lib/concurrent/timer_task.rb,
lib/concurrent/scheduled_task.rb,
lib/concurrent/dereferenceable.rb,
lib/concurrent/fixed_thread_pool.rb,
lib/concurrent/cached_thread_pool.rb,
lib/concurrent/global_thread_pool.rb,
lib/concurrent/fixed_thread_pool/worker.rb,
lib/concurrent/cached_thread_pool/worker.rb,
lib/concurrent/event_machine_defer_proxy.rb
Defined Under Namespace
Modules: Dereferenceable, Obligation, Postable, Runnable, UsesGlobalThreadPool Classes: Actor, Agent, CachedThreadPool, Contract, Event, EventMachineDeferProxy, FixedThreadPool, Future, NullThreadPool, Promise, ScheduledTask, Supervisor, TimerTask
Constant Summary collapse
- VERSION =
'0.3.2'- TimeoutError =
Class.new(StandardError)
Class Method Summary collapse
Class Method Details
.timeout(seconds) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/concurrent/utilities.rb', line 7 def timeout(seconds) thread = Thread.new do Thread.current[:result] = yield end success = thread.join(seconds) if success return thread[:result] else raise TimeoutError end ensure Thread.kill(thread) unless thread.nil? end |