Почему MCNearbyServiceAdvertiser использует внутреннюю очередь отправки?
Пока я просматривал заголовки среды выполнения iOS 7, что-то привлекло мое внимание. В классе MCNearbyServiceAdvertiser, являющемся частью инфраструктуры Multipeer Connectivity, свойство называется syncQueue
есть и несколько методов с префиксом sync
определены. Некоторые из этих методов существуют в префиксной и нефиксированной версии, например: startAdvertisingPeer
а также syncStartAdvertisingPeer
,
Мой вопрос: какова цель этого свойства и этих префиксных методов и как они объединяются?
(edit: удалено замечание, что очередь является последовательной, как указано CouchDeveloper, поскольку мы не можем этого знать)
1 ответ
Как вы знаете, реализация является частной.
Наличие очереди отправки, чье имя syncQueue
может не означать, что эта очередь является последовательной очередью. Это может быть и параллельная очередь.
Мы можем только догадываться, что startAdvertisingPeer
и "префикс" версия syncStartAdvertisingPeer
может означать.
Например, для выполнения внутренних предпосылок startAdvertisingPeer
Можно предположить, что он всегда вызывается из контекста выполнения, кроме syncQueue. Таким образом, он может синхронно отправлять в syncQueue с вызовом syncStartAdvertisingPeer
не попадая в тупик. С другой стороны, syncStartAdvertisingPeer
всегда предполагает выполнение в syncQueue, что гарантирует параллелизм.
Но, как уже говорилось, мы не знаем реальных деталей - это только приблизительное предположение. Обычно вы должны читать документацию, а не некоторые подробности частного заголовка, чтобы нарисовать представление о том, как этот класс может работать.