Kolejka szeregowa FIFO za pomocą GCD

Próbuję utworzyć (zsynchronizowaną) tablicę dla firmy, dla której pracuję. Podczas gdy część sieci działa dobrze, zajmowałem się problemem.

Moim życzeniem było stworzenie nowej kolejki za pomocądispatch_create_queue, do której dodam dwa bloki, które sąnie uruchomić na wątku głównym, ale w sposób szeregowy, co oznacza, że ​​najpierw musi zostać uruchomiony pierwszy blok, potem drugi i nigdy równolegle.

Przeczytałem dokumentację Apple, ale jest to co najmniej mylące.

Kiedy tworzę kolejkę za pomocądispatch_queue_create a następnie dodaj bloki (po ich zdefiniowaniu) za pomocądispatch_sync, Dowiedziałem się, że blok nadal wykonuje się w głównym wątku.

Podczas używaniadispatch_async, to jest, gdy bloki nie są wykonywane w głównym wątku.

Kiedy próbuję dodać oba bloki, użyjdispatch_sync Zostają zablokowani na zawsze.

Jedynym razem, gdy oba bloki wydają się działać dobrze, a poza głównym wątkiem, jest dzwonieniedispatch_async.

Jednak powód, dla którego wybrałem GCD i metodę synchronizacji, tak że miałem wrażenie, że tworzę nową kolejkę (a tym samym nowy wątek) i że dodawanie bloków do tej kolejki po prostu blokowałoby jedną, dopóki druga nie zakończy wykonywania. Czy tak nie jest, czy tworzenie kolejki nie gwarantuje, że kod nie zostanie uruchomiony w głównym wątku?

questionAnswers(1)

yourAnswerToTheQuestion