title: What's the case for semaphore passing a value greater than zero
body: <p>Most of the articles I've found are using semaphore for usage of waiting a task finished, then do the rest of tasks. In this case, semaphore is always start with a value 0, and then increase the value in the completeHandler.</p>
  
  <p>However, according to documentation:</p>
  
  <blockquote>
    <p>Passing a value greater than zero is useful for managing a finite pool of resources, where the pool size is equal to the value</p>
  </blockquote>
  
  <p>I've tried to find an example for this case, but which turn out all I've found are talking about using <code>dispatch_group_wait</code> for waiting for multiple tasks finished. Would someone please give me an example and scenario for the case using a semaphore with a init value greater than <code>0</code>?</p>