В разделе Migrating Away from Threads Руководства по программированию параллелизма Apple есть
Changing Producer-Consumer Implementations , в котором утверждается, что типичный многоступенчатый pthread Реализацию переменной mutex + condition можно упростить с помощью GCD.
С помощью очередей отправки вы можете упростить реализации производителя и потребителя одним вызовом:
dispatch_async(queue, ^{
// Process a work item.
});
Когда у вашего производителя есть работа, все, что ему нужно сделать, это добавить эту работу в очередь и позвольте очереди обработать элемент.
Проблема "производитель-потребитель" также известна как проблема ограниченного буфера, однако выше не упоминается буфер, его привязка или потребитель, не говоря уже о блокировании производителя и потребителя во избежание чрезмерного / недостаточного выполнения.
Как это может быть верным решением?