title: Thread starvation when using dispatch_semaphore_wait inside dispatch queue?
body: <p>If I'm using <code>dispatch_semaphore_wait</code> inside a dispatch queue, could this starve my dispatch queue of threads if many threads are blocked on <code>dispatch_semaphore_wait</code>?</p>
  
  <pre><code>parallelDownloadsSemaphore = dispatch_semaphore_create(4);
  
  [...]
  
  dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0), ^{
      dispatch_semaphore_wait([self parallelDownloadsSemaphore], DISPATCH_TIME_FOREVER);
      // perform lengthy download
      dispatch_semaphore_signal([self parallelDownloadsSemaphore]);
  });
  </code></pre>