0

Пока я просматривал заголовки времени выполнения iOS 7, что-то привлекло мое внимание. В области MCNearbyServiceAdvertiser class, являющейся частью структуры Multipleer Connectivity, определено свойство syncQueue и определены несколько методов с префиксом sync. Некоторые из этих методов существуют в префиксной и не префиксной версии, например startAdvertisingPeer и syncStartAdvertisingPeer.Почему MCNearbyServiceAdvertiser использует внутреннюю очередь отправки?

Мой вопрос в том, какова была бы цель как этого свойства, так и этих префиксных методов и как они сочетаются?

(редактирование: убрана замечание о том, что очередь является последовательной как указывает CouchDeveloper, так как мы не можем этого знать)

ответ

1

Как вы знаете, реализация является частным.

Наличие очереди отправки, имя которой syncQueue, может не означать, что эта очередь является последовательной очередью. Это может быть одновременная очередь.

Мы можем только предположить, что может означать startAdvertisingPeer и «префикс» версии syncStartAdvertisingPeer.

Например, для того, чтобы выполнить внутренние предпосылки startAdvertisingPeerможет предполагать, что она всегда вызывается из контекста исполнения кроме в syncQueue. Таким образом, он может синхронно отправлять в syncQueue с вызовом syncStartAdvertisingPeer, не заканчивая в тупике. С другой стороны, syncStartAdvertisingPeer всегда будет предполагать выполнение на syncQueue, тем самым гарантируя параллелизм.

Но, как указано, мы не знаем конкретных деталей - это просто грубое предположение. Обычно вы должны прочитать документацию, а не какие-то личные данные заголовка, чтобы нарисовать в голове, как этот класс может работать.

Смежные вопросы