As far as I understand non-main-queue GCD queues, they are serial by default only on devices with single-core CPUs. But if a device has multiple cores, it can happen that blocks in the queue get executed simultaneously.
I want to use a serial GCD queue to overcome some concurrency problems and this queue must be serial even if there are multiple cores.
A developer mentioned this is possible somehow. How would I create such a always-serial queue?
Standard GCD queues that can be obtained with
dispatch_get_global_queue function are concurrent indeed.
But you can create custom gcd queue using dispatch_queue_create function. Pass
DISPATCH_QUEUE_SERIAL as a second parameter to create that queue as serial.