dispatch_queue_создать несколько вызовов с одной и той же меткой

#iphone #ios #grand-central-dispatch

#iPhone #iOS #grand-central-dispatch

Вопрос:

У меня есть требование выполнить небольшой набор связанных задач в пользовательском потоке, созданном для них. Задачи будут запланированы из разных классов. Я планирую использовать dispatch_queue_create от GCD для создания пользовательского потока и планирования задачи для него. Обратите внимание, что все связанные задачи должны выполняться только в этом одном потоке по порядку.
Итак, мой вопрос: если я вызову dispatch_queue_create («my_custom_thread_label», NULL) с одной и той же меткой из многих классов в моей кодовой базе, будет ли все это в конечном итоге сопоставлено только с одним потоком? Или мне нужно создать его в одном месте и получать ссылку на него всякий раз, когда это необходимо? Спасибо.

Ответ №1:

Вам нужно создать его в одном месте и передать указатель.

Комментарии:

1. Но что произойдет, если вы просто вызовете dispatch_queue_create одну и ту же метку несколько раз?

2. Это дает вам новый экземпляр очереди, а старый протекает, он похож на объект.

3. odyth — это кажется несовместимым с документацией: developer.apple.com/library/mac/documentation/Darwin/Reference/… Метка предоставляется только для FYI и (фактически) необязательна. Вы могли бы предоставить пустую метку. Каждый раз, когда вы вызываете d_q_c(), он возвращает новый объект очереди — никаких утечек.