class Async::Semaphore
def limit= limit
On increasing the limit, some tasks may be immediately resumed. On decreasing the limit, some tasks may execute until the count is < than the limit.
Allow setting the limit. This is useful for cases where the semaphore is used to limit the number of concurrent tasks, but the number of tasks is not known in advance or needs to be modified.
def limit= limit difference = limit - @limit @limit = limit # We can't suspend if difference > 0 difference.times do break unless node = @waiting.first node.resume end end end