Method: Async::Semaphore#async

Defined in:
lib/async/semaphore.rb

#async(*arguments, parent: (@parent or Task.current), **options) ⇒ Object

Run an async task. Will wait until the semaphore is ready until spawning and running the task.



61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/async/semaphore.rb', line 61

def async(*arguments, parent: (@parent or Task.current), **options)
  wait
  
  parent.async(**options) do |task|
    @count += 1
    
    begin
      yield task, *arguments
    ensure
      self.release
    end
  end
end