Semaphore.setCapacity

Change the capacity of the semaphore

If immediate is set to false and the current level is higher than the requested capacity, setCapacity will sleep until the capacity can be cleared.

If immediate is false then setCapacity may return before the new capacity is actually set. This will only happen if there is an older setCapacity call that has not yet finished.

struct Semaphore
@safe @nogc
void
setCapacity
(,
bool immediate = false
)

Parameters

newCapacity size_t

The new capacity

immediate bool

whether the new capacity takes effect immediately.

Warnings: Setting the capacity to lower than the number of resources a waiting fiber is currently requesting is undefined.

If immediate is set to true, it is possible for level to report a higher acquired count than capacity.

If there is a chance that multiple calls to setCapacity are active at once, the immeditate flag must be set the same way on all of them. In other words, it is illegal to call setCapacity with immediate set to false, and then call setCapacity with immediate set to true before the first call returns.

Meta