Class: SharedBroker::Concurrency::Limiter
- Inherits:
-
Object
- Object
- SharedBroker::Concurrency::Limiter
- Defined in:
- lib/shared_broker/concurrency/limiter.rb
Instance Method Summary collapse
-
#initialize(max_concurrency: nil, backpressure_check: nil, backpressure_backoff: 1.0) ⇒ Limiter
constructor
A new instance of Limiter.
- #run ⇒ Object
Constructor Details
#initialize(max_concurrency: nil, backpressure_check: nil, backpressure_backoff: 1.0) ⇒ Limiter
Returns a new instance of Limiter.
8 9 10 11 12 |
# File 'lib/shared_broker/concurrency/limiter.rb', line 8 def initialize(max_concurrency: nil, backpressure_check: nil, backpressure_backoff: 1.0) @backpressure_check = backpressure_check @backpressure_backoff = backpressure_backoff @semaphore = max_concurrency ? Semaphore.new(max_concurrency) : nil end |
Instance Method Details
#run ⇒ Object
14 15 16 17 18 19 20 21 |
# File 'lib/shared_broker/concurrency/limiter.rb', line 14 def run wait_while_overloaded if @semaphore @semaphore.synchronize { yield } else yield end end |