Последовательная очередь FIFO с использованием GCD

Я пытаюсь создать (сетевой) синхронизированный массив для компании, в которой я работаю. Хотя сетевая часть работает нормально, я столкнулся с проблемой.

Мое желание состояло в том, чтобы создать новую очередь, используяdispatch_create_queue, к которому я бы добавил два блока, которыене работать в главном потоке, но в последовательном порядке, что означает, что сначала должен выполняться первый блок, затем второй, и никогда параллельно.

Я прочитал документацию по Apple, но, по меньшей мере, это сбивает с толку.

Когда я создаю свою очередь, используяdispatch_queue_create а затем добавить блоки (после того, как они были определены), используяdispatch_syncЯ обнаружил, что блок все еще выполняется в основном потоке.

Когда используешьdispatch_async, то есть когда блоки не выполняются в основном потоке.

Когда я пытаюсь добавить оба блока, используяdispatch_sync Они заблокированы навсегда.

Единственный раз, когда оба блока работают нормально и выходят из основного потока, это когдаdispatch_async.

Однако причина, по которой я выбрал GCD и метод синхронизации, заключалась в том, что у меня сложилось впечатление, что я создаю новую очередь (и, следовательно, новый поток) и что добавление блоков в эту очередь будет просто блокировать одну, пока другая не завершит выполнение. Разве это не так, или создание очереди не гарантирует, что код не будет выполняться в главном потоке?

Ответы на вопрос(1)

Ваш ответ на вопрос