Can this happen with Grand Central Dispatch ?
This is a complicated question. If you "suspend" a GCD queue using the traditional APIs then it will happen between block execution, which is unlikely to cause problems, because people do not typically take locks between different items. But if you suspend the thread that backs the queue (using thread_suspend) you will definitely run into problems unless you're really careful.