Contract to not impede progress in concurrency pool

I stand by my post here: Is @concurrent now the standard tool for shifting expensive synchronous work off the main actor? - #17 by David_Smith

In short: the contract is extremely narrow and mostly forbids things that people already know not to do (like using DispatchSemaphore to turn asynchronous APIs into synchronous ones). The advice is broader but is very situational and in my opinion is drastically over-applied, perhaps due to people mistakenly believing it’s the contract.

Also the main thread in an app is never part of the Swift Concurrency pool, so work on the pool will never block it regardless of whether the pool is fully blocked.

7 Likes