What is the scheduling model for libdispatch (GCD)?
<p>What is the scheduling model for blocks in libdispatch? I understand there are various queues with different priorities. Is it as simple as the highest priority queue gets served first by worker threads?</p>

<p>If this is the case how does it avoid starvation in the lower priority queues? What happens when a thread is blocking?</p>

<p>How is blocking I/O handled on the worker threads?</p>

<p>How does it know how many worker threads to spawn, and does it spawn more to handle load during runtime?</p>

<p>How does libdispatch compare to something like goroutines?</p>