OptionalactiveJobIds: Iterable<JobId, any, any>Get active count
Get limit
Release the slot held by jobId; a job without a slot changes nothing.
Update limit; the jobs holding a slot keep it.
Try to acquire a slot for jobId; a job that already holds one keeps it.
Concurrency limiter: admits at most
limitjobs of a queue at once.It records which job ids hold a slot rather than a bare counter, so acquire and release are symmetric per job: releasing a job that holds no slot (one that was released already, or that is not active) is a no-op and can never open a phantom slot. A limiter created while jobs of the queue are already active is seeded with their ids, so they count toward the new limit.