Spec-Zone .ru
спецификации, руководства, описания, API

Библиотека разработчика Mac

Разработчик

диспетчеризируйте Ссылку Платформы Ссылка Grand Central Dispatch (GCD)

Опции
Развертывание Target:

На этой странице
Язык:

Ссылка Grand Central Dispatch (GCD)

Grand Central Dispatch (GCD) включает функции языка, библиотеки времени выполнения и системные улучшения, обеспечивающие системные, всесторонние улучшения поддержки параллельного выполнения кода на многожильных аппаратных средствах в iOS и OS X.

Подсистема BSD, CoreFoundation и Какао APIs были все расширены для использования этих улучшений, чтобы помочь и системе и приложению работать быстрее, более эффективно, и с улучшенной скоростью отклика. Рассмотрите, насколько трудный это для отдельного приложения для использования многократных ядер эффективно, уже не говоря о выполнении его на различных компьютерах с различными числами вычислительных ядер или в среде с многократными приложениями, конкурирующими за те ядра. GCD, работающий на системном уровне, может лучше разместить потребности всех запущенных приложений, соответствуя им к доступным системным ресурсам сбалансированным способом.

Этот документ описывает GCD API, поддерживающий асинхронное выполнение операций на уровне Unix системы. Можно использовать этот API для управления взаимодействиями с дескрипторами файлов, портами Маха, сигналами или таймерами. В OS X v10.7 и позже, можно также использовать GCD для обработки асинхронных операций I/O общего назначения на дескрипторах файлов.

GCD не ограничивается приложениями системного уровня, но перед использованием его для высокоуровневых приложений необходимо рассмотреть, обеспечила ли схожая функциональность в Какао (через NSOperation и блочные объекты), было бы проще использовать или более подходящий для Ваших потребностей. См. Руководство по программированию Параллелизма для получения дополнительной информации.

Объекты GCD и автоматический подсчет ссылок

При создании приложения с помощью компилятора Objective C все объекты отгрузки являются объектами Objective C. Также, когда автоматический подсчет ссылок (ARC) включен, объекты отгрузки сохранены и выпущены автоматически точно так же, как любой другой объект Objective C. Когда ARC не будет включен, используйте dispatch_retain и dispatch_release функции (или семантика Objective C), чтобы сохранить и выпустить Ваши объекты отгрузки. Вы не можете использовать Базовую Основу, сохраняют/выпускают функции.

Если необходимо использовать, сохраняют/выпускают семантику в поддерживающем ARC приложении с более поздней целью развертывания (для поддержания совместимости с существующим кодом), можно отключить объекты отгрузки Объективные на базе С путем добавления -DOS_OBJECT_USE_OBJC=0 к Вашим флагам компилятора.

Функции

  • Возвращает последовательную очередь отгрузки, связанную с основным потоком приложения.

    Объявление

    Swift

    func dispatch_get_main_queue() -> dispatch_queue_t!

    Objective C

    dispatch_queue_t dispatch_get_main_queue ( void );

    Возвращаемое значение

    Возвращает основную очередь. Эта очередь создается автоматически от имени основного потока прежде main вызывается.

    Обсуждение

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

    Как с глобальными параллельными очередями, вызовами к dispatch_suspend, dispatch_resume, dispatch_set_context, и т.п. не имейте никакого эффекта, когда используется с очередями, возвращенными этой функцией.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.6 и позже

  • Возвращает определенную с помощью системы глобальную параллельную очередь с указанным классом качества обслуживания.

    Объявление

    Swift

    func dispatch_get_global_queue(_ identifier: Int, _ flags: UInt) -> dispatch_queue_t!

    Objective C

    dispatch_queue_t dispatch_get_global_queue ( long identifier, unsigned long flags );

    Параметры

    identifier

    Качество обслуживания Вы хотите дать задачам, выполняемым с помощью этой очереди. Качество обслуживания помогает определить приоритет, отданный задачам, выполняемым очередью. Можно указать значения QOS_CLASS_USER_INTERACTIVE, QOS_CLASS_USER_INITIATED, QOS_CLASS_UTILITY, или QOS_CLASS_BACKGROUND. У очередей, обрабатывающих интерактивные с пользователем или инициируемые пользователями задачи, есть более высокий приоритет, чем задачи означали работать в фоновом режиме.

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

    flags

    Флаги, резервирующиеся для будущего использования. Всегда указывайте 0 для этого параметра.

    Возвращаемое значение

    Требуемая глобальная параллельная очередь.

    Обсуждение

    Эта функция возвращает очередь, подходящую для выполнения задач с указанным уровнем качества обслуживания. Вызовы к dispatch_suspend, dispatch_resume, и dispatch_set_context функции не имеют никакого эффекта на возвращенные очереди.

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

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.6 и позже.

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

    Объявление

    Swift

    func dispatch_queue_create(_ label: UnsafePointer<Int8>, _ attr: dispatch_queue_attr_t!) -> dispatch_queue_t!

    Objective C

    dispatch_queue_t dispatch_queue_create ( const char *label, dispatch_queue_attr_t attr );

    Параметры

    label

    Строковая метка для присоединения к очереди для однозначного определения его в средствах отладки, таких как Инструменты, sample, stackshots и отчеты катастрофического отказа. Поскольку приложения, библиотеки и платформы могут все создать свои собственные очереди отгрузки, стиль именования обратного DNS (com.example.myqueue) рекомендуется. Этот параметр является дополнительным и может быть NULL.

    attr

    В OS X v10.7 и позже или iOS 4.3 и позже, указать DISPATCH_QUEUE_SERIAL (или NULL) создать последовательную очередь или указать DISPATCH_QUEUE_CONCURRENT создать параллельную очередь. В более ранних версиях необходимо указать NULL для этого параметра.

    Возвращаемое значение

    Недавно создаваемая очередь отгрузки.

    Обсуждение

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

    Когда для Вашего приложения больше не нужна очередь отгрузки, оно должно выпустить его с dispatch_release функция. Любые незаконченные блоки, представленные очереди, содержат ссылку на ту очередь, таким образом, очередь не освобождена, пока все незаконченные блоки не завершились.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.6 и позже.

  • Возвращает очередь, на которой работает в настоящее время выполняющийся блок.

    Объявление

    Objective C

    dispatch_queue_t dispatch_get_current_queue ( void );

    Возвращаемое значение

    Возвращает текущую очередь.

    Обсуждение

    Эта функция определяется, чтобы никогда возвратиться NULL.

    Если вызов выполняется от основного потока, когда вызвано от за пределами контекста представленного блока, эта функция возвращает основную очередь. Если вызов выполняется от какого-либо другого потока, эта функция возвращает параллельную очередь по умолчанию.

    Оператор импорта

    Objective C

    @import Dispatch;

    Доступность

    Доступный в OS X v10.6 и позже.

    Осуждаемый в OS X v10.9.

  • Атрибуты возвратов, подходящие для создания очереди отгрузки с желаемой информацией о качестве обслуживания.

    Объявление

    Swift

    func dispatch_queue_attr_make_with_qos_class(_ attr: dispatch_queue_attr_t!, _ qos_class: dispatch_qos_class_t, _ relative_priority: Int32) -> dispatch_queue_attr_t!

    Objective C

    dispatch_queue_attr_t dispatch_queue_attr_make_with_qos_class ( dispatch_queue_attr_t attr, dispatch_qos_class_t qos_class, int relative_priority );

    Параметры

    attr

    Значение атрибута очереди, которое будет объединено с классом качества обслуживания. Указать DISPATCH_QUEUE_SERIAL если Вы хотите, чтобы представленные задачи были запланированы последовательно или DISPATCH_QUEUE_CONCURRENT если задачи могут быть запланированы одновременно. Если Вы указываете NULL, эта функция создает последовательную очередь.

    qos_class

    Качество обслуживания Вы хотите дать задачам, выполняемым с помощью этой очереди. Качество обслуживания помогает определить приоритет, отданный задачам, выполняемым очередью. Укажите одно из значений QOS_CLASS_USER_INTERACTIVE, QOS_CLASS_USER_INITIATED, QOS_CLASS_UTILITY, или QOS_CLASS_BACKGROUND. У очередей, обрабатывающих интерактивные с пользователем или инициируемые пользователями задачи, есть более высокий приоритет, чем задачи означали работать в фоновом режиме.

    relative_priority

    Отрицательное смещение от максимального поддерживаемого приоритета планировщика для данного класса качества обслуживания. Это значение должно быть меньше, чем 0 и больше, чем MIN_QOS_CLASS_PRIORITY

    Возвращаемое значение

    Значение атрибута, которое может быть передано dispatch_queue_create функционируйте при создании очереди отгрузки.

    Обсуждение

    Вызовите эту функцию до вызова dispatch_queue_create функционируйте, когда Вы захотите создать очередь отгрузки с определенным уровнем качества обслуживания. Эта функция комбинирует атрибуты типа очереди с информацией о качестве обслуживания, которую Вы указываете, и возвращает значение, которое можно передать dispatch_queue_create функция. Значение качества обслуживания Вы указываете использование этой функции, имеет приоритет по приоритетному уровню, наследованному от целевой очереди очереди отгрузки.

    Глобальные приоритеты очереди отображаются на следующие классы качества обслуживания:

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.10 и позже.

  • Когда очередь создавалась, возвращает метку, указанную для очереди.

    Объявление

    Swift

    func dispatch_queue_get_label(_ queue: dispatch_queue_t!) -> UnsafePointer<Int8>

    Objective C

    const char * dispatch_queue_get_label ( dispatch_queue_t queue );

    Параметры

    queue

    Этот параметр не может быть NULL.

    Возвращаемое значение

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

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.6 и позже.

  • Устанавливает целевую очередь для данного объекта.

    Объявление

    Swift

    func dispatch_set_target_queue(_ object: dispatch_object_t!, _ queue: dispatch_queue_t!)

    Objective C

    void dispatch_set_target_queue ( dispatch_object_t object, dispatch_queue_t queue );

    Параметры

    object

    Объект изменить. Этот параметр не может быть NULL.

    queue

    Новая целевая очередь для объекта. Очередь сохраняется, и предыдущий, если таковые имеются, выпущен. Этот параметр не может быть NULL.

    Обсуждение

    Целевая очередь объекта ответственна за обработку объекта. Целевая очередь определяет очередь, на которую вызывается финализатор объекта. Кроме того, изменение целевой очереди некоторых объектов изменяет их поведение:

    • Очереди отгрузки:

      Приоритет очереди отгрузки наследован от его целевой очереди. Используйте dispatch_get_global_queue функция для получения подходящей целевой очереди желаемого приоритета.

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

    • Источники отгрузки:

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

    • Отгрузка каналы I/O:

      Целевая очередь канала I/O отгрузки указывает, где выполняются ее операции I/O. Это может влиять на приоритет получающихся операций I/O. Например, если приоритет целевой очереди канала установлен в DISPATCH_QUEUE_PRIORITY_BACKGROUND, тогда любые операции I/O, выполняемые dispatch_io_read или dispatch_io_write когда существует конкуренция I/O, на той очереди регулируются.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.6 и позже.

  • Выполняет блоки, представленные основной очереди.

    Объявление

    Swift

    @noreturn func dispatch_main()

    Objective C

    void dispatch_main ( void );

    Возвращаемое значение

    Эта функция никогда не возвращается.

    Обсуждение

    Эта функция «паркует» основной поток и ожидает блоков, которые будут представлены основной очереди. Приложения тот вызов UIApplicationMain (iOS), NSApplicationMain (OS X), или CFRunLoopRun на основном потоке не должен вызывать dispatch_main.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.6 и позже.

GCD предоставляет и управляет очередями FIFO, которым Ваше приложение может представить задачи в форме блочных объектов. Блоки, представленные для диспетчеризации очередей, выполняются на пуле потоков, которыми полностью управляет система. Никакая гарантия не сделана относительно потока, на котором выполняется задача. GCD предлагает три вида очередей:

  • Основной: задачи выполняются последовательно на основном потоке Вашего приложения

  • Параллельный: задачи исключаются из очереди в порядке FIFO, но выполняются одновременно и могут закончиться в любом порядке.

  • Последовательный: задачи выполняются по одному в порядке FIFO

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

Используйте параллельные очереди для выполнения больших количеств задач одновременно. GCD автоматически создает четыре параллельных очереди отгрузки (три до iOS 5 или OS X v10.7), которые являются глобальной переменной к Вашему приложению и дифференцируются только их приоритетным уровнем. Ваши запросы приложения эти очереди, использующие dispatch_get_global_queue функция. Поскольку эти параллельные очереди являются глобальной переменной к Вашему приложению, Вы не должны сохранять и выпускать их; сохраните и выпустите, требует их, проигнорированы. В OS X v10.7 и позже или iOS 4.3 и позже, можно также создать дополнительные параллельные очереди для использования в собственных модулях кода.

Используйте последовательные очереди, чтобы гарантировать что задачи выполниться в предсказуемом порядке. Это - хорошая практика для идентификации определенной цели для каждой последовательной очереди, такой как защита ресурса или синхронизация ключевых процессов. Ваше приложение должно явно создать и управлять последовательными очередями. Это может создать столько же из них по мере необходимости, но должно избегать использования их вместо параллельных очередей только для выполнения многих задач одновременно.

  • Представляет блок для асинхронного выполнения на очереди отгрузки и возвратов сразу.

    Объявление

    Swift

    func dispatch_async(_ queue: dispatch_queue_t!, _ block: dispatch_block_t!)

    Objective C

    void dispatch_async ( dispatch_queue_t queue, dispatch_block_t block );

    Параметры

    queue

    Очередь, на которой можно представить блок. Очередь сохраняется системой, пока блок не работал к завершению. Этот параметр не может быть NULL.

    block

    Блок, чтобы подчиниться целевой очереди отгрузки. Эта функция выполняет Block_copy и Block_release от имени вызывающих сторон. Этот параметр не может быть NULL.

    Обсуждение

    Эта функция является фундаментальным механизмом для представления блоков очереди отгрузки. Вызовы к этой функции всегда сразу возвращаются после того, как блок был представлен и никогда не ожидает блока, который будет вызван. Целевая очередь определяет, вызывается ли блок последовательно или одновременно с уважением к другим блокам, представленным той же самой очереди. Независимые последовательные очереди обрабатываются одновременно с уважением друг к другу.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.6 и позже.

  • Представляет определенную с помощью приложения функцию для асинхронного выполнения на очереди отгрузки и возвратов сразу.

    Объявление

    Swift

    func dispatch_async_f(_ queue: dispatch_queue_t!, _ context: UnsafeMutablePointer<Void>, _ work: dispatch_function_t)

    Objective C

    void dispatch_async_f ( dispatch_queue_t queue, void *context, dispatch_function_t work );

    Параметры

    queue

    Очередь, на которой можно представить функцию. Очередь сохраняется системой, пока функция не работала к завершению. Этот параметр не может быть NULL.

    context

    Определенный с помощью приложения параметр контекста для передачи функции.

    work

    Определенная с помощью приложения функция для вызова на целевую очередь. Первый параметр, переданный этой функции, является значением context параметр. Этот параметр не может быть NULL.

    Обсуждение

    Эта функция является фундаментальным механизмом для представления определенных с помощью приложения функций очереди отгрузки. Вызовы к этой функции всегда сразу возвращаются после того, как функция была представлена и никогда не ожидает ее, чтобы быть вызванной. Целевая очередь определяет, вызывается ли функция последовательно или одновременно с уважением к другим задачам, представленным той же самой очереди. Последовательные очереди обрабатываются одновременно с уважением друг к другу.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.6 и позже.

  • Представляет блочный объект для выполнения на очереди отгрузки и ожидает, пока тот блок не завершается.

    Объявление

    Swift

    func dispatch_sync(_ queue: dispatch_queue_t!, _ block: dispatch_block_t!)

    Objective C

    void dispatch_sync ( dispatch_queue_t queue, dispatch_block_t block );

    Параметры

    queue

    Очередь, на которой можно представить блок. Этот параметр не может быть NULL.

    block

    Блок, который будет вызван на целевую очередь отгрузки. Этот параметр не может быть NULL.

    Обсуждение

    Представляет блок очереди отгрузки для синхронного выполнения. В отличие от этого dispatch_async, эта функция не возвращается, пока блок не закончился. Вызывание этой функции и предназначение для текущей очереди приводят к мертвой блокировке.

    В отличие от этого с dispatch_async, нет сохраните, выполняется на целевой очереди. Поскольку вызовы к этой функции синхронны, она «занимает» ссылку вызывающей стороны. Кроме того, нет Block_copy выполняется на блоке.

    Как оптимизация, эта функция вызывает блок на текущий поток, если это возможно.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.6 и позже.

  • Представляет определенную с помощью приложения функцию для синхронного выполнения на очереди отгрузки.

    Объявление

    Swift

    func dispatch_sync_f(_ queue: dispatch_queue_t!, _ context: UnsafeMutablePointer<Void>, _ work: dispatch_function_t)

    Objective C

    void dispatch_sync_f ( dispatch_queue_t queue, void *context, dispatch_function_t work );

    Параметры

    queue

    Очередь, на которой можно представить функцию. Этот параметр не может быть NULL.

    context

    Определенный с помощью приложения параметр контекста для передачи функции.

    work

    Определенная с помощью приложения функция для вызова на целевую очередь. Первый параметр, переданный этой функции, является значением в context параметр. Этот параметр не может быть NULL.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.6 и позже.

    См. также

    dispatch_sync

  • Ставьте в очередь блок для выполнения в требуемое время.

    Объявление

    Swift

    func dispatch_after(_ when: dispatch_time_t, _ queue: dispatch_queue_t!, _ block: dispatch_block_t!)

    Objective C

    void dispatch_after ( dispatch_time_t when, dispatch_queue_t queue, dispatch_block_t block );

    Параметры

    when

    Временный этап, возвращенный dispatch_time или dispatch_walltime.

    queue

    Очередь, на которой можно представить блок. Очередь сохраняется системой, пока блок не работал к завершению. Этот параметр не может быть NULL.

    block

    Блок для представления. Эта функция выполняет a Block_copy и Block_release от имени вызывающей стороны. Этот параметр не может быть NULL.

    Обсуждение

    Эта функция ожидает до требуемого времени и затем асинхронно добавляет block к указанному queue.

    Передача DISPATCH_TIME_NOW как when параметр поддерживается, но не так оптимален как вызов dispatch_async вместо этого. Передача DISPATCH_TIME_FOREVER не определено.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.6 и позже.

  • Ставит в очередь определенную с помощью приложения функцию для выполнения в требуемое время.

    Объявление

    Swift

    func dispatch_after_f(_ when: dispatch_time_t, _ queue: dispatch_queue_t!, _ context: UnsafeMutablePointer<Void>, _ work: dispatch_function_t)

    Objective C

    void dispatch_after_f ( dispatch_time_t when, dispatch_queue_t queue, void *context, dispatch_function_t work );

    Параметры

    when

    Временный этап, возвращенный dispatch_time или dispatch_walltime.

    queue

    Очередь, на которой можно представить функцию. Очередь сохраняется системой, пока определенная с помощью приложения функция не работала к завершению. Этот параметр не может быть NULL.

    context

    Определенный с помощью приложения параметр контекста для передачи функции.

    work

    Определенная с помощью приложения функция для вызова на целевую очередь. Первый параметр, переданный этой функции, является значением в context параметр. Этот параметр не может быть NULL.

    Обсуждение

    Эта функция ожидает до требуемого времени и затем асинхронно добавляет work функционируйте к указанному queue.

    Передача DISPATCH_TIME_NOW как when параметр поддерживается, но не так оптимален как вызов dispatch_async вместо этого. Передача DISPATCH_TIME_FOREVER не определено.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.6 и позже.

  • Представляет блок очереди отгрузки для многократных вызовов.

    Объявление

    Swift

    func dispatch_apply(_ iterations: UInt, _ queue: dispatch_queue_t!, _ block: ((UInt) -> Void)!)

    Objective C

    void dispatch_apply ( size_t iterations, dispatch_queue_t queue, void (^block)(size_t) );

    Параметры

    iterations

    Число итераций для выполнения.

    queue

    Очередь, на которой можно представить блок. Этот параметр не может быть NULL.

    block

    Определенная с помощью приложения функция, которая будет представлена. Этот параметр не может быть NULL.

    Обсуждение

    Эта функция представляет блок очереди отгрузки для многократных вызовов и ожидает всех итераций блока задачи для завершения перед возвратом. Если целевая очередь является параллельной очередью, возвращенной dispatch_get_global_queue, блок может быть вызван одновременно, и это должно поэтому быть повторно используемо-безопасно. Используя эту функцию с параллельной очередью может быть полезным как эффективная параллель for цикл.

    Текущий индекс итерации передается каждому вызову блока.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.6 и позже.

  • Представляет определенную с помощью приложения функцию очереди отгрузки для многократных вызовов.

    Объявление

    Swift

    func dispatch_apply_f(_ iterations: UInt, _ queue: dispatch_queue_t!, _ context: UnsafeMutablePointer<Void>, _ work: CFunctionPointer<((UnsafeMutablePointer<Void>, UInt) -> Void)>)

    Objective C

    void dispatch_apply_f ( size_t iterations, dispatch_queue_t queue, void *context, void (*work)(void *, size_t) );

    Параметры

    iterations

    Число итераций для выполнения.

    queue

    Очередь, на которой можно представить функцию. Этот параметр не может быть NULL.

    context

    Определенный с помощью приложения параметр контекста для передачи функции.

    work

    Определенная с помощью приложения функция для вызова на целевую очередь. Первый параметр, переданный этой функции, является значением в context параметр. Второй параметр является текущим индексом итерации. Этот параметр не может быть NULL.

    Обсуждение

    Эта функция представляет определенную с помощью приложения функцию очереди отгрузки для многократных вызовов и ожидает всех итераций функции для завершения перед возвратом. Если целевая очередь является параллельной очередью, возвращенной dispatch_get_global_queue, функция может быть вызвана одновременно, и это должно поэтому быть повторно используемо-безопасно. Используя эту функцию с параллельной очередью может быть полезным как эффективная параллель for цикл.

    Текущий индекс итерации передается каждому вызову функции.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.6 и позже.

  • Выполняет блочный объект один раз и только один раз для времени жизни приложения.

    Объявление

    Swift

    func dispatch_once(_ predicate: UnsafeMutablePointer<dispatch_once_t>, _ block: dispatch_block_t!)

    Objective C

    void dispatch_once ( dispatch_once_t *predicate, dispatch_block_t block );

    Параметры

    predicate

    Указатель на a dispatch_once_t структура, использующаяся, чтобы протестировать, завершился ли блок или нет.

    block

    Блочный объект выполниться один раз.

    Обсуждение

    Эта функция полезна для инициализации глобальных данных (одиночные элементы) в приложении. Всегда вызывайте эту функцию перед использованием или тестирующий любые переменные, инициализирующиеся блоком.

    Если вызвано одновременно от многократных потоков, эта функция ожидает синхронно, пока блок не завершился.

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

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.6 и позже.

  • Выполняет блочный объект один раз и только один раз для времени жизни приложения.

    Объявление

    Swift

    func dispatch_once_f(_ predicate: UnsafeMutablePointer<dispatch_once_t>, _ context: UnsafeMutablePointer<Void>, _ function: dispatch_function_t)

    Objective C

    void dispatch_once_f ( dispatch_once_t *predicate, void *context, dispatch_function_t function );

    Параметры

    predicate

    Указатель на a dispatch_once_t структура, использующаяся, чтобы протестировать, завершился ли блок или нет.

    context

    Определенный с помощью приложения параметр контекста для передачи функции.

    function

    Определенная с помощью приложения функция для вызова один раз на целевую очередь. Параметр, переданный этой функции, является значением в context параметр. Этот параметр не может быть NULL.

    Обсуждение

    Эта функция полезна для инициализации глобальных данных (одиночные элементы) в приложении. Всегда вызывайте эту функцию перед использованием или тестирующий любые переменные, инициализирующиеся функцией.

    Если вызвано одновременно от многократных потоков, эта функция ожидает синхронно, пока функция работы не завершилась.

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

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.6 и позже.

Группировка блоков допускает совокупную синхронизацию. Ваше приложение может представить многократные блоки и отследить, когда они все завершаются, даже при том, что они могли бы работать на различных очередях. Это поведение может быть полезным, когда успехи не могут быть сделаны, пока все указанные задачи не завершены.

  • Представляет блок очереди отгрузки и связывает блок с указанной группой отгрузки.

    Объявление

    Swift

    func dispatch_group_async(_ group: dispatch_group_t!, _ queue: dispatch_queue_t!, _ block: dispatch_block_t!)

    Objective C

    void dispatch_group_async ( dispatch_group_t group, dispatch_queue_t queue, dispatch_block_t block );

    Параметры

    group

    Группа отгрузки для соединения представленного блока возражает с. Группа сохраняется системой, пока блок не работал к завершению. Этот параметр не может быть NULL.

    queue

    Очередь отгрузки, которой блочный объект представлен для асинхронного вызова. Очередь сохраняется системой, пока блок не работал к завершению. Этот параметр не может быть NULL.

    block

    Блочный объект выполнить асинхронно. Эта функция выполняет a Block_copy и Block_release от имени вызывающей стороны.

    Обсуждение

    Представляет блок очереди отгрузки и связывает блочный объект с данной группой отгрузки. Группа отгрузки может использоваться для ожидания завершения блочных объектов его ссылки.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.6 и позже.

  • Представляет определенную с помощью приложения функцию очереди отгрузки и связывает его с указанной группой отгрузки.

    Объявление

    Swift

    func dispatch_group_async_f(_ group: dispatch_group_t!, _ queue: dispatch_queue_t!, _ context: UnsafeMutablePointer<Void>, _ work: dispatch_function_t)

    Objective C

    void dispatch_group_async_f ( dispatch_group_t group, dispatch_queue_t queue, void *context, dispatch_function_t work );

    Параметры

    group

    Группа отгрузки для соединения представленной функции с. Группа сохраняется системой, пока определенная с помощью приложения функция не работала к завершению. Этот параметр не может быть NULL.

    queue

    Очередь отгрузки, которой функция представлена для асинхронного вызова. Очередь сохраняется системой, пока определенная с помощью приложения функция не работала к завершению. Этот параметр не может быть NULL.

    context

    Определенный с помощью приложения параметр контекста для передачи определенной с помощью приложения функции.

    work

    Определенная с помощью приложения функция для вызова на целевую очередь. Первый параметр, переданный этой функции, является значением в context параметр.

    Обсуждение

    Представляет определенную с помощью приложения функцию очереди отгрузки и связывает его с данной группой отгрузки. Группа отгрузки может использоваться для ожидания завершения определенных с помощью приложения функций, на которые это ссылается.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.6 и позже.

  • Создает новую группу, с которой могут быть связаны блочные объекты.

    Объявление

    Swift

    func dispatch_group_create() -> dispatch_group_t!

    Objective C

    dispatch_group_t dispatch_group_create ( void );

    Возвращаемое значение

    Недавно создаваемая группа, или NULL при отказе.

    Обсуждение

    Эта функция создает новую группу, с которой могут быть связаны блочные объекты (при помощи dispatch_group_async функция). Группа отгрузки поддерживает количество своих выдающихся связанных задач, постепенно увеличивая количество, когда новая задача связана и постепенное уменьшение его, когда завершается задача. Функции такой как dispatch_group_notify и dispatch_group_wait используйте то количество, чтобы позволить Вашему приложению определять, когда завершатся все задачи, связанные с группой. В то время Ваше приложение может принять любые соответствующие меры.

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

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.6 и позже.

  • Явно указывает, что блок ввел группу.

    Объявление

    Swift

    func dispatch_group_enter(_ group: dispatch_group_t!)

    Objective C

    void dispatch_group_enter ( dispatch_group_t group );

    Параметры

    group

    Группа отгрузки для обновления. Этот параметр не может быть NULL.

    Обсуждение

    Вызов этой функции постепенно увеличивает текущее количество выдающихся задач в группе. Используя эту функцию (с dispatch_group_leave) позволяет Вашему приложению должным образом управлять подсчетом ссылок задачи, если это явно добавляет и удаляет задачи из группы средние значения кроме использования dispatch_group_async функция. Вызов к этой функции должен быть сбалансирован с вызова к dispatch_group_leave. Можно использовать эту функцию для соединения блока больше чем с одной группой одновременно.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.6 и позже.

  • Явно указывает, что завершился блок в группе.

    Объявление

    Swift

    func dispatch_group_leave(_ group: dispatch_group_t!)

    Objective C

    void dispatch_group_leave ( dispatch_group_t group );

    Параметры

    group

    Группа отгрузки для обновления. Этот параметр не может быть NULL.

    Обсуждение

    Вызов этой функции постепенно уменьшает текущее количество выдающихся задач в группе. Используя эту функцию (с dispatch_group_enter) позволяет Вашему приложению должным образом управлять подсчетом ссылок задачи, если это явно добавляет и удаляет задачи из группы средние значения кроме использования dispatch_group_async функция.

    Вызов к этой функции должен сбалансировать вызов к dispatch_group_enter. Это недопустимо для вызова его больше раз, чем dispatch_group_enter, который привел бы к отрицательному количеству.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.6 и позже.

  • Планирует блочный объект, который будет представлен очереди, когда завершилась группа ранее представленных блочных объектов.

    Объявление

    Swift

    func dispatch_group_notify(_ group: dispatch_group_t!, _ queue: dispatch_queue_t!, _ block: dispatch_block_t!)

    Objective C

    void dispatch_group_notify ( dispatch_group_t group, dispatch_queue_t queue, dispatch_block_t block );

    Параметры

    group

    Группа отгрузки для наблюдения. Группа сохраняется системой, пока блок не работал к завершению. Этот параметр не может быть NULL.

    queue

    Очередь, которой представлен предоставленный блок, когда завершается группа. Очередь сохраняется системой, пока блок не работал к завершению. Этот параметр не может быть NULL.

    block

    Блок для представления, когда завершается группа. Эта функция выполняет a Block_copy и Block_release от имени вызывающей стороны. Этот параметр не может быть NULL.

    Обсуждение

    Эта функция планирует блок уведомления, который будет представлен указанной очереди, когда завершились все блоки, связанные с группой отгрузки. Если группа пуста (никакие блочные объекты не связаны с группой отгрузки), блочный объект уведомления сразу представлен.

    Когда блок уведомления представлен, группа пуста. Группа может или быть выпущена с dispatch_release или быть снова использованным для дополнительных блочных объектов. Посмотрите dispatch_group_async для получения дополнительной информации.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.6 и позже.

  • Планирует определенную с помощью приложения функцию, которая будет представлена очереди, когда завершилась группа ранее представленных блочных объектов.

    Объявление

    Swift

    func dispatch_group_notify_f(_ group: dispatch_group_t!, _ queue: dispatch_queue_t!, _ context: UnsafeMutablePointer<Void>, _ work: dispatch_function_t)

    Objective C

    void dispatch_group_notify_f ( dispatch_group_t group, dispatch_queue_t queue, void *context, dispatch_function_t work );

    Параметры

    group

    Группа отгрузки для наблюдения. Группа сохраняется системой, пока определенная с помощью приложения функция не работала к завершению. Этот параметр не может быть NULL.

    queue

    Очередь, которой представлен предоставленный блок, когда завершается группа. Очередь сохраняется системой, пока определенная с помощью приложения функция не работала к завершению. Этот параметр не может быть NULL.

    context

    Определенный с помощью приложения параметр контекста для передачи определенной с помощью приложения функции.

    work

    Определенная с помощью приложения функция для вызова на целевую очередь. Первый параметр, переданный этой функции, является значением в context параметр.

    Обсуждение

    Эта функция планирует блок уведомления, который будет представлен указанной очереди, когда завершились все блоки, связанные с группой отгрузки. Если группа пуста (никакие блочные объекты не связаны с группой отгрузки), блочный объект уведомления сразу представлен.

    Когда блок уведомления представлен, группа пуста. Группа может или быть выпущена с dispatch_release или быть снова использованным для дополнительных блоков. Посмотрите dispatch_group_async для получения дополнительной информации.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.6 и позже.

  • Ожидает синхронно ранее представленных блочных объектов завершиться; протекли возвраты, если блоки не завершаются перед указанным периодом тайм-аута.

    Объявление

    Swift

    func dispatch_group_wait(_ group: dispatch_group_t!, _ timeout: dispatch_time_t) -> Int

    Objective C

    long dispatch_group_wait ( dispatch_group_t group, dispatch_time_t timeout );

    Параметры

    group

    Группа отгрузки для ожидания на. Этот параметр не может быть NULL.

    timeout

    Когда к тайм-ауту (см. dispatch_time). DISPATCH_TIME_NOW и DISPATCH_TIME_FOREVER константы предоставлены как удобство.

    Возвращаемое значение

    Нуль возвратов на успехе (все блоки, связанные с группой, завершились перед указанным тайм-аутом), или ненулевой на ошибке (тайм-аут произошел).

    Обсуждение

    Эта функция ожидает завершения блоков, связанных с данной группой отгрузки, и возвращается, когда или все блоки завершились или указанный тайм-аут, протек. Когда тайм-аут происходит, группа восстанавливается ее исходному состоянию.

    Эта функция сразу возвращается, если группа отгрузки пуста (нет никаких блоков, связанных с группой).

    После успешного возврата этой функции группа отгрузки пуста. Это может или быть выпущено с dispatch_release или быть снова использованным для дополнительных блоков. Посмотрите dispatch_group_async для получения дополнительной информации.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.6 и позже.

GCD обеспечивает интерфейсы объекта отгрузки, чтобы позволить Вашему приложению управлять аспектами обработки, такими как управление памятью, приостановка и возобновление выполнения, определение контекста объекта и регистрация данных задачи. Объекты отгрузки должны быть вручную сохранены и выпущены и не собраны «мусор».

  • Программно отладочная информация журналов об объекте отгрузки.

    Объявление

    Objective C

    void dispatch_debug ( dispatch_object_t object, const char *message, ... );

    Параметры

    object

    Объект заняться самоанализом.

    message

    Сообщение для журналирования выше и вне самоанализа, в форме строки формата printf-стиля. Содержание этого сообщения добавляется к сообщению журнала, разделенному двоеточием, как это: «{Dispatch_object_information}: сообщение».

    Обсуждение

    Отладочная информация регистрируется к Консольному журналу. Эта информация может быть полезной как средство отладки для просмотра внутреннего состояния (текущий подсчет ссылок, количество приостановки, и т.д.) объекта отгрузки в это время dispatch_debug функция вызвана.

    Оператор импорта

    Objective C

    @import Dispatch;

    Доступность

    Доступный в OS X v10.6 и позже.

    Осуждаемый в OS X v10.9.

  • Возвращает определенный с помощью приложения контекст объекта.

    Объявление

    Swift

    func dispatch_get_context(_ object: dispatch_object_t!) -> UnsafeMutablePointer<Void>

    Objective C

    void * dispatch_get_context ( dispatch_object_t object );

    Параметры

    object

    Этот параметр не может быть NULL.

    Возвращаемое значение

    Контекст объекта; может быть NULL.

    Обсуждение

    Ваше приложение может связать пользовательские данные контекста с объектом, чтобы использоваться только Вашим приложением. Ваше приложение должно выделить и освободить данные как надлежащие.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.6 и позже.

  • Постепенно уменьшается ссылка (сохраняют) количество объекта отгрузки.

    Объявление

    Objective C

    void dispatch_release ( dispatch_object_t object );

    Параметры

    object

    Объект выпустить. Этот параметр не может быть NULL.

    Обсуждение

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

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

    Оператор импорта

    Objective C

    @import Dispatch;

    Доступность

    Доступный в OS X v10.6 и позже.

  • Возобновите вызов блочных объектов на объекте отгрузки.

    Объявление

    Swift

    func dispatch_resume(_ object: dispatch_object_t!)

    Objective C

    void dispatch_resume ( dispatch_object_t object );

    Параметры

    object

    Объект, который будет возобновлен. Этот параметр не может быть NULL.

    Обсуждение

    Вызов этой функции постепенно уменьшает количество приостановки временно отстраненной очереди отгрузки или объекта источника события отгрузки. В то время как количество больше, чем нуль, объект остается приостановленным. Когда, в то время как приостановлено поставлены возвраты к нулю количества приостановки, любые блоки, представленные очереди отгрузки или любые события, наблюдаемые источником отгрузки.

    За одним исключением, каждым вызовом к dispatch_resume должен сбалансировать вызов к dispatch_suspend. Новые объекты источника события отгрузки, возвращенные dispatch_source_create имейте количество приостановки 1, и должен быть возобновлен, прежде чем любые события поставлены. Этот подход позволяет Вашему приложению полностью конфигурировать объект источника события отгрузки до поставки первого события. Во всех других случаях это не определено для вызова dispatch_resume больше раз, чем dispatch_suspend, который привел бы к отрицательному количеству приостановки.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.6 и позже.

  • Постепенно увеличивается ссылка (сохраняют) количество объекта отгрузки.

    Объявление

    Objective C

    void dispatch_retain ( dispatch_object_t object );

    Параметры

    object

    Объект сохранить. Этот параметр не может быть NULL.

    Обсуждение

    Вызовы к этой функции должны быть сбалансированы с вызовов к dispatch_release. Если многократные подсистемы Вашего приложения совместно используют объект отгрузки, каждая подсистема должна вызвать dispatch_retain зарегистрировать его интерес к объекту. Объект освобожден только, когда все подсистемы выпустили свой интерес к источнику отгрузки.

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

    Оператор импорта

    Objective C

    @import Dispatch;

    Доступность

    Доступный в OS X v10.6 и позже.

  • Связывает определенный с помощью приложения контекст с объектом.

    Объявление

    Swift

    func dispatch_set_context(_ object: dispatch_object_t!, _ context: UnsafeMutablePointer<Void>)

    Objective C

    void dispatch_set_context ( dispatch_object_t object, void *context );

    Параметры

    object

    Этот параметр не может быть NULL.

    context

    Новый определенный с помощью приложения контекст для объекта. Это может быть NULL.

    Обсуждение

    Ваше приложение может связать пользовательские данные контекста с объектом, чтобы использоваться только Вашим приложением. Ваше приложение должно выделить и освободить данные как надлежащие.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.6 и позже.

  • Устанавливает функцию финализатора для объекта отгрузки.

    Объявление

    Swift

    func dispatch_set_finalizer_f(_ object: dispatch_object_t!, _ finalizer: dispatch_function_t)

    Objective C

    void dispatch_set_finalizer_f ( dispatch_object_t object, dispatch_function_t finalizer );

    Параметры

    object

    Объект отгрузки изменить. Этот параметр не может быть NULL.

    finalizer

    Указатель функции финализатора.

    Обсуждение

    Финализатор для объекта отгрузки вызывается на целевую очередь того объекта после того, как все ссылки на объект будут выпущены вызовами к dispatch_release. Приложение может использовать финализатор для высвобождения любых средств, связанных с объектом, таких как определенный с помощью приложения контекст объекта. Параметр контекста, переданный функции финализатора, является текущим контекстом объекта отгрузки в то время, когда выполняется вызов финализатора. Если определенный с помощью приложения контекст, финализатор не вызывают NULL.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.6 и позже.

  • Приостанавливает вызов блочных объектов на объекте отгрузки.

    Объявление

    Swift

    func dispatch_suspend(_ object: dispatch_object_t!)

    Objective C

    void dispatch_suspend ( dispatch_object_t object );

    Параметры

    object

    Очередь отгрузки или источник отгрузки для приостановки. (Вы не можете приостановить другие типы объектов отгрузки.) Этот параметр не может быть NULL.

    Обсуждение

    Путем приостановки объекта отгрузки приложение может временно предотвратить выполнение любых блоков, связанных с тем объектом. Приостановка происходит после завершения любых блоков, работающих во время вызова. Вызов этой функции постепенно увеличивает количество приостановки объекта и вызов dispatch_resume декременты это. В то время как количество больше, чем нуль, объект остается приостановленным, таким образом, необходимо сбалансировать каждого dispatch_suspend вызовите с соответствием dispatch_resume вызвать.

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

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.6 и позже.

Семафор отгрузки является эффективным внедрением традиционного семафора подсчета. Семафоры отгрузки раскритиковывают к ядру только, когда должен быть блокирован вызывающий поток. Если семафор вызова не должен блокировать, никакой вызов ядра не сделан.

  • Создает новый семафор подсчета с начальным значением.

    Объявление

    Swift

    func dispatch_semaphore_create(_ value: Int) -> dispatch_semaphore_t!

    Objective C

    dispatch_semaphore_t dispatch_semaphore_create ( long value );

    Параметры

    value

    Начальное значение для семафора. Передача значения меньше, чем нулевые причины NULL быть возвращенным.

    Возвращаемое значение

    Недавно создаваемый семафор, или NULL при отказе.

    Обсуждение

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

    Когда для Вашего приложения больше не нужен семафор, оно должно вызвать dispatch_release выпустить его ссылку на семафорный объект и в конечном счете освободить его память.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.6 и позже.

  • Сигналы (инкременты) семафор.

    Объявление

    Swift

    func dispatch_semaphore_signal(_ dsema: dispatch_semaphore_t!) -> Int

    Objective C

    long dispatch_semaphore_signal ( dispatch_semaphore_t dsema );

    Параметры

    dsema

    Семафор подсчета. Этот параметр не может быть NULL.

    Возвращаемое значение

    Эти возвраты функции, ненулевые, если разбужен поток. Иначе, нуль возвращается.

    Обсуждение

    Постепенно увеличьте семафор подсчета. Если предыдущее значение было меньше, чем нуль, эта функция, в настоящее время будит поток ожидая в dispatch_semaphore_wait.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.6 и позже.

  • Ожидает (декрементов) семафор.

    Объявление

    Swift

    func dispatch_semaphore_wait(_ dsema: dispatch_semaphore_t!, _ timeout: dispatch_time_t) -> Int

    Objective C

    long dispatch_semaphore_wait ( dispatch_semaphore_t dsema, dispatch_time_t timeout );

    Параметры

    dsema

    Семафор. Этот параметр не может быть NULL.

    timeout

    Когда к тайм-ауту (см. dispatch_time). Константы DISPATCH_TIME_NOW и DISPATCH_TIME_FOREVER доступны как удобство.

    Возвращаемое значение

    Если тайм-аут произошел, возвраты обнуляют на успехе, или ненулевой.

    Обсуждение

    Постепенно уменьшите семафор подсчета. Если получающееся значение является меньше, чем нуль, эта функция ожидает в порядке FIFO на сигнал произойти перед возвратом.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.6 и позже.

Барьер отгрузки позволяет Вам создавать точку синхронизации в параллельной очереди отгрузки. Когда это встречается с барьером, параллельная очередь задерживает выполнение блока барьера (или дальнейшие блоки), пока все блоки не подчинились перед выполнением конца барьера. В той точке блок барьера выполняется отдельно. После завершения очередь возобновляет свое нормальное поведение при выполнении.

  • Представляет блок барьера для асинхронного выполнения и возвратов сразу.

    Объявление

    Swift

    func dispatch_barrier_async(_ queue: dispatch_queue_t!, _ block: dispatch_block_t!)

    Objective C

    void dispatch_barrier_async ( dispatch_queue_t queue, dispatch_block_t block );

    Параметры

    queue

    Очередь отгрузки, на которой можно выполнить блок барьера. Очередь сохраняется системой, пока блок не работал к завершению. Этот параметр не может быть NULL.

    block

    Блок барьера, чтобы подчиниться целевой очереди отгрузки. Этот блок копируется и сохраняется, пока он не заканчивает выполняться, в которой точке он выпущен. Этот параметр не может быть NULL.

    Обсуждение

    Вызовы к этой функции всегда сразу возвращаются после того, как блок был представлен и никогда не ожидает блока, который будет вызван. Когда блок барьера достигает передней стороны частной параллельной очереди, это сразу не выполняется. Вместо этого очередь ожидает, пока ее в настоящее время выполняющиеся блоки не заканчивают выполняться. В той точке блок барьера выполняется отдельно. Любые блоки подчинились после того, как блок барьера не выполняется, пока блок барьера не завершается.

    Очередь, которую Вы указываете, должна быть параллельной очередью, которую Вы создаете сами с помощью dispatch_queue_create функция. Если очередь, которую Вы передаете этой функции, является последовательной очередью или одной из глобальных параллельных очередей, эта функция ведет себя как dispatch_async функция.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.7 и позже.

  • Представляет барьерную функцию для асинхронного выполнения и возвратов сразу.

    Объявление

    Swift

    func dispatch_barrier_async_f(_ queue: dispatch_queue_t!, _ context: UnsafeMutablePointer<Void>, _ work: dispatch_function_t)

    Objective C

    void dispatch_barrier_async_f ( dispatch_queue_t queue, void *context, dispatch_function_t work );

    Параметры

    queue

    Очередь отгрузки, на которой можно выполнить барьерную функцию. Очередь сохраняется системой, пока функция не работала к завершению. Этот параметр не может быть NULL.

    context

    Определенный с помощью приложения параметр контекста для передачи функции.

    work

    Определенная с помощью приложения барьерная функция, которая будет выполняться. Первый параметр, переданный этой функции, является значением context параметр. Этот параметр не может быть NULL.

    Обсуждение

    Вызовы к этой функции всегда сразу возвращаются после того, как барьерная функция была представлена и никогда не ожидает той функции, которая будет вызвана. Когда барьерная функция достигает передней стороны частной параллельной очереди, это сразу не выполняется. Вместо этого очередь ожидает, пока ее в настоящее время выполняющиеся блоки не заканчивают выполняться. В той точке очередь выполняет барьерную функцию отдельно. Любые блоки подчинились после того, как барьерная функция не выполняется, пока барьерная функция не завершается.

    Очередь, которую Вы указываете, должна быть параллельной очередью, которую Вы создаете сами с помощью dispatch_queue_create функция. Если очередь, которую Вы передаете этой функции, является последовательной очередью или одной из глобальных параллельных очередей, эта функция ведет себя как dispatch_async функция.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.7 и позже.

  • Представляет блочный объект барьера для выполнения и ожидает, пока тот блок не завершается.

    Объявление

    Swift

    func dispatch_barrier_sync(_ queue: dispatch_queue_t!, _ block: dispatch_block_t!)

    Objective C

    void dispatch_barrier_sync ( dispatch_queue_t queue, dispatch_block_t block );

    Параметры

    queue

    Очередь отгрузки, на которой можно выполнить блок барьера. Этот параметр не может быть NULL.

    block

    Блок барьера, который будет выполняться. Этот параметр не может быть NULL.

    Обсуждение

    Представляет блок барьера очереди отгрузки для синхронного выполнения. В отличие от этого dispatch_barrier_async, эта функция не возвращается, пока блок барьера не закончился. Вызывание этой функции и предназначение для текущей очереди приводят к мертвой блокировке.

    Когда блок барьера достигает передней стороны частной параллельной очереди, это сразу не выполняется. Вместо этого очередь ожидает, пока ее в настоящее время выполняющиеся блоки не заканчивают выполняться. В той точке очередь выполняет блок барьера отдельно. Любые блоки подчинились после того, как блок барьера не выполняется, пока блок барьера не завершается.

    Очередь, которую Вы указываете, должна быть параллельной очередью, которую Вы создаете сами с помощью dispatch_queue_create функция. Если очередь, которую Вы передаете этой функции, является последовательной очередью или одной из глобальных параллельных очередей, эта функция ведет себя как dispatch_sync функция.

    В отличие от этого с dispatch_barrier_async, нет сохраните, выполняется на целевой очереди. Поскольку вызовы к этой функции синхронны, она «занимает» ссылку вызывающей стороны. Кроме того, нет Block_copy выполняется на блоке.

    Как оптимизация, эта функция вызывает блок барьера на текущий поток, если это возможно.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.7 и позже.

  • Представляет барьерную функцию для выполнения и ожидает, пока та функция не завершается.

    Объявление

    Swift

    func dispatch_barrier_sync_f(_ queue: dispatch_queue_t!, _ context: UnsafeMutablePointer<Void>, _ work: dispatch_function_t)

    Objective C

    void dispatch_barrier_sync_f ( dispatch_queue_t queue, void *context, dispatch_function_t work );

    Параметры

    queue

    Очередь отгрузки, на которой можно выполнить барьерную функцию. Этот параметр не может быть NULL.

    context

    Определенный с помощью приложения параметр контекста для передачи барьерной функции.

    work

    Определенная с помощью приложения барьерная функция, которая будет выполняться. Первый параметр, переданный этой функции, является значением в context параметр. Этот параметр не может быть NULL.

    Обсуждение

    Представляет барьерную функцию очереди отгрузки для синхронного выполнения. В отличие от этого dispatch_barrier_async_f, эта функция не возвращается, пока барьерная функция не закончилась. Вызывание этой функции и предназначение для текущей очереди приводят к мертвой блокировке.

    Когда барьерная функция достигает передней стороны частной параллельной очереди, это сразу не выполняется. Вместо этого очередь ожидает, пока ее в настоящее время выполняющиеся блоки не заканчивают выполняться. В той точке очередь выполняет барьерную функцию отдельно. Любые блоки подчинились после того, как барьерная функция не выполняется, пока барьерная функция не завершается.

    Очередь, которую Вы указываете, должна быть параллельной очередью, которую Вы создаете сами с помощью dispatch_queue_create функция. Если очередь, которую Вы передаете этой функции, является последовательной очередью или одной из глобальных параллельных очередей, эта функция ведет себя как dispatch_sync_f функция.

    В отличие от этого с dispatch_barrier_async_f, нет сохраните, выполняется на целевой очереди. Поскольку вызовы к этой функции синхронны, она «занимает» ссылку вызывающей стороны.

    Как оптимизация, эта функция вызывает барьерную функцию на текущий поток, если это возможно.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.7 и позже.

GCD обеспечивает, комплект источников отгрузки — взаимодействует через интерфейс для контроля (низкоуровневые системные объекты, такие как дескрипторы Unix, порты Маха, сигналы Unix, узлы VFS, и т.д) для действия. и представление обработчиков событий для диспетчеризации очередей, когда происходит такое действие. Когда событие имеет место, источник отгрузки представляет Ваш код задачи асинхронно указанной очереди отгрузки для обработки.

  • Асинхронно отменяет источник отгрузки, предотвращая дальнейший вызов его блока обработчика событий.

    Объявление

    Swift

    func dispatch_source_cancel(_ source: dispatch_source_t!)

    Objective C

    void dispatch_source_cancel ( dispatch_source_t source );

    Параметры

    source

    Источник отгрузки, который будет отменен. Этот параметр не может быть NULL.

    Обсуждение

    Отмена предотвращает дальнейший вызов блока обработчика событий для указанного источника отгрузки, но не прерывает уже происходящий блок обработчика событий. Дополнительный обработчик отмены представлен целевой очереди, как только был завершен блок обработчика событий.

    Обработчик отмены представлен целевой очереди источника, когда обработчик событий источника закончился, указав, что безопасно закрыть дескриптор источника (дескриптор файла или порт Маха).

    Дополнительный обработчик отмены представлен целевой очереди исходного объекта отгрузки только после того, как система выпустила все свои ссылки на любые базовые системные объекты (дескрипторы файлов или порты Маха). Таким образом обработчик отмены является удобным местом, чтобы закрыть или освободить такие системные объекты. Обратите внимание на то, что это недопустимо, чтобы закрыть дескриптор файла или освободить порт Маха, в настоящее время прослеживаемый исходным объектом отгрузки, прежде чем будет вызван обработчик отмены.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.6 и позже.

  • Создает новый источник отгрузки, чтобы контролировать низкоуровневые системные объекты и автоматически представить блок обработчика очереди отгрузки в ответ на события.

    Объявление

    Swift

    func dispatch_source_create(_ type: dispatch_source_type_t, _ handle: UInt, _ mask: UInt, _ queue: dispatch_queue_t!) -> dispatch_source_t!

    Objective C

    dispatch_source_t dispatch_source_create ( dispatch_source_type_t type, uintptr_t handle, unsigned long mask, dispatch_queue_t queue );

    Параметры

    type

    Тип источника отгрузки. Должна быть одна из констант, перечисленных в Исходных Константах Типа Отгрузки.

    handle

    Базовая система обрабатывает для контроля. Интерпретация этого параметра определяется константой, предоставленной в параметре типа.

    mask

    Маска флагов, указывающих, какие события желаемы. Интерпретация этого параметра определяется константой, предоставленной в параметре типа.

    queue

    Очередь отгрузки, которой представлен блок обработчика событий.

    Возвращаемое значение

    Новый исходный объект отгрузки или NULL если не мог бы быть создан источник отгрузки.

    Обсуждение

    Источники отгрузки не повторно используемы. Любые события, полученные, в то время как источник отгрузки приостановлен или в то время как блок обработчика событий в настоящее время выполняется, объединены и поставлены после того, как источник отгрузки возобновляется, или блок обработчика событий возвратился.

    Источники отгрузки создаются в состоянии ожидания. После создания источника и установки любых желаемых атрибутов (например, обработчик или контекст), Ваше приложение должно вызвать dispatch_resume начать поставку события.

    Когда для Вашего приложения больше не нужен источник события, оно должно вызвать dispatch_release выпустить его ссылку на исходный объект и в конечном счете освободить его память.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.6 и позже.

  • Возвраты незаконченные данные для источника отгрузки.

    Объявление

    Swift

    func dispatch_source_get_data(_ source: dispatch_source_t!) -> UInt

    Objective C

    unsigned long dispatch_source_get_data ( dispatch_source_t source );

    Параметры

    source

    Этот параметр не может быть NULL.

    Возвращаемое значение

    Возвращаемое значение должно быть интерпретировано согласно типу источника отгрузки и может быть одним из следующего:

    Обсуждение

    Вызовите эту функцию из блока обработчика событий. Результат вызывания этой функции за пределами обратного вызова обработчика событий не определен.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.6 и позже.

  • Возвращает базовый системный дескриптор, связанный с указанным источником отгрузки.

    Объявление

    Swift

    func dispatch_source_get_handle(_ source: dispatch_source_t!) -> UInt

    Objective C

    uintptr_t dispatch_source_get_handle ( dispatch_source_t source );

    Параметры

    source

    Этим параметром не может быть NULL.

    Возвращаемое значение

    Возвращаемое значение должно быть интерпретировано согласно типу источника отгрузки и может быть одним из следующих дескрипторов:

    Обсуждение

    Дескриптор возвратился, ссылка на базовый системный объект, контролируемый источником отгрузки.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.6 и позже.

  • Возвращает маску событий, следивших за развитием источником отгрузки.

    Объявление

    Swift

    func dispatch_source_get_mask(_ source: dispatch_source_t!) -> UInt

    Objective C

    unsigned long dispatch_source_get_mask ( dispatch_source_t source );

    Параметры

    source

    Этот параметр не может быть NULL.

    Возвращаемое значение

    Возвращаемое значение должно быть интерпретировано согласно типу источника отгрузки и может быть одним из следующих наборов флага:

    Обсуждение

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

    Для получения дополнительной информации см. описания флага в Константах.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.6 и позже.

  • Данные слияний в источник отгрузки типа DISPATCH_SOURCE_TYPE_DATA_ADD или DISPATCH_SOURCE_TYPE_DATA_OR и представляет его блок обработчика событий его целевой очереди.

    Объявление

    Swift

    func dispatch_source_merge_data(_ source: dispatch_source_t!, _ value: UInt)

    Objective C

    void dispatch_source_merge_data ( dispatch_source_t source, unsigned long value );

    Параметры

    source

    Этот параметр не может быть NULL.

    value

    Значение для объединения с незаконченными данными с помощью логического OR или ADD, как указано исходным типом отгрузки. Значение нуля не имеет никакого эффекта и не приводит к представлению блока обработчика событий.

    Обсуждение

    Ваше приложение может использовать эту функцию, чтобы указать, что событие имело место на одном из определенных с помощью приложения источников событий отгрузки типа DISPATCH_SOURCE_TYPE_DATA_ADD или DISPATCH_SOURCE_TYPE_DATA_OR.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.6 и позже.

  • Устанавливает регистрационный блок обработчика для данного источника отгрузки.

    Объявление

    Swift

    func dispatch_source_set_registration_handler(_ source: dispatch_source_t!, _ registration_handler: dispatch_block_t!)

    Objective C

    void dispatch_source_set_registration_handler ( dispatch_source_t source, dispatch_block_t handler );

    Параметры

    source

    Источник отгрузки для изменения. Этот параметр не может быть NULL.

    registration_handler

    Регистрационный обработчик блокирует для установки. Предыдущий регистрационный обработчик (если таковые имеются) выпущен, прежде чем новый установлен. Эта функция использует a Block_copy вызовите для хранения копии нового регистрационного обработчика. Этот параметр может быть NULL.

    Обсуждение

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

    После того, как Ваш обработчик работы выполняется, источник отгрузки удаляет его. Таким образом регистрационные обработчики выполняются только один раз после возобновления источника отгрузки.

    Если Вы устанавливаете регистрационный обработчик на источнике отгрузки, уже устанавливающемся и выполнение, Ваш обработчик сразу вызывается.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.7 и позже.

  • Устанавливает регистрационную функцию-обработчик для данного источника отгрузки.

    Объявление

    Swift

    func dispatch_source_set_registration_handler_f(_ source: dispatch_source_t!, _ registration_handler: dispatch_function_t)

    Objective C

    void dispatch_source_set_registration_handler_f ( dispatch_source_t source, dispatch_function_t handler );

    Параметры

    source

    Источник отгрузки для изменения. Этот параметр не может быть NULL.

    registration_handler

    Регистрационная функция-обработчик для установки. Предыдущий регистрационный обработчик (если таковые имеются) выпущен, прежде чем новый установлен. Параметр контекста, переданный функции обработчика событий, является текущим контекстом источника отгрузки в то время, когда выполняется вызов обработчика. Этот параметр может быть NULL.

    Обсуждение

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

    После того, как Ваш обработчик работы выполняется, источник отгрузки удаляет его. Таким образом регистрационные обработчики выполняются только один раз после возобновления источника отгрузки.

    Если Вы устанавливаете регистрационный обработчик на источнике отгрузки, уже устанавливающемся и выполнение, Ваш обработчик сразу вызывается.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.7 и позже.

  • Устанавливает блок обработчика отмены для данного источника отгрузки.

    Объявление

    Swift

    func dispatch_source_set_cancel_handler(_ source: dispatch_source_t!, _ handler: dispatch_block_t!)

    Objective C

    void dispatch_source_set_cancel_handler ( dispatch_source_t source, dispatch_block_t handler );

    Параметры

    source

    Источник отгрузки для изменения. Этот параметр не может быть NULL.

    handler

    Обработчик отмены блокирует, чтобы подчиниться целевой очереди источника. Эта функция выполняет a Block_copy от имени вызывающей стороны, и Block_release на предыдущем обработчике (если таковые имеются). Этот параметр может быть NULL.

    Обсуждение

    Обработчик отмены (если указано) представлен целевой очереди источника в ответ на вызов к dispatch_source_cancel когда система выпустила все ссылки на базовый дескриптор источника, и блок обработчика событий источника возвратился.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.6 и позже.

  • Устанавливает функцию-обработчик отмены для данного источника отгрузки.

    Объявление

    Swift

    func dispatch_source_set_cancel_handler_f(_ source: dispatch_source_t!, _ handler: dispatch_function_t)

    Objective C

    void dispatch_source_set_cancel_handler_f ( dispatch_source_t source, dispatch_function_t handler );

    Параметры

    source

    Источник отгрузки для изменения. Этот параметр не может быть NULL.

    handler

    Функция-обработчик отмены, чтобы подчиниться целевой очереди источника. Параметр контекста, переданный функции обработчика событий, является текущим контекстом источника отгрузки в то время, когда выполняется вызов обработчика.

    Обсуждение

    Обработчик отмены (если указано) представлен целевой очереди источника в ответ на вызов к dispatch_source_cancel когда система выпустила все ссылки на базовый дескриптор источника, и блок обработчика событий источника возвратился.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.6 и позже.

  • Устанавливает блок обработчика событий для данного источника отгрузки.

    Объявление

    Swift

    func dispatch_source_set_event_handler(_ source: dispatch_source_t!, _ handler: dispatch_block_t!)

    Objective C

    void dispatch_source_set_event_handler ( dispatch_source_t source, dispatch_block_t handler );

    Параметры

    source

    Источник отгрузки для изменения. Этот параметр не может быть NULL.

    handler

    Блок обработчика событий, чтобы подчиниться целевой очереди источника. Эта функция выполняет a Block_copy от имени вызывающей стороны, и Block_release на предыдущем обработчике (если таковые имеются). Этот параметр не может быть NULL.

    Обсуждение

    Обработчик событий (если указано) представлен целевой очереди источника в ответ на поступление события.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.6 и позже.

  • Устанавливает функцию обработчика событий для данного источника отгрузки.

    Объявление

    Swift

    func dispatch_source_set_event_handler_f(_ source: dispatch_source_t!, _ handler: dispatch_function_t)

    Objective C

    void dispatch_source_set_event_handler_f ( dispatch_source_t source, dispatch_function_t handler );

    Параметры

    source

    Источник отгрузки для изменения. Этот параметр не может быть NULL.

    handler

    Функция обработчика событий, чтобы подчиниться целевой очереди источника. Параметр контекста, переданный функции обработчика событий, является текущим контекстом источника отгрузки в то время, когда выполняется вызов обработчика. Этот параметр не может быть NULL.

    Обсуждение

    Обработчик событий (если указано) представлен целевой очереди источника в ответ на поступление события.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.6 и позже.

  • Устанавливает время начала, интервал и значение запаса времени для источника таймера.

    Объявление

    Swift

    func dispatch_source_set_timer(_ source: dispatch_source_t!, _ start: dispatch_time_t, _ interval: UInt64, _ leeway: UInt64)

    Objective C

    void dispatch_source_set_timer ( dispatch_source_t source, dispatch_time_t start, uint64_t interval, uint64_t leeway );

    Параметры

    start

    Время начала таймера. Посмотрите dispatch_time и dispatch_walltime для получения дополнительной информации.

    interval

    Интервал наносекунды для таймера.

    leeway

    Количество времени, в наносекундах, что система может задержать таймер.

    Обсуждение

    Ваше приложение может вызвать эту функцию многократно на том же исходном объекте таймера отгрузки для сброса временного интервала для источника таймера по мере необходимости.

    start параметр времени также определяет, какие часы используются для таймера. Если время начала DISPATCH_TIME_NOW или создается с dispatch_time, таймер основывается mach_absolute_time. Иначе, если время начала таймера создается с dispatch_walltime, таймер основывается gettimeofday(3).

    leeway параметр является подсказкой из приложения как на сумму времени в наносекундах, до которых система может задержать таймер для выравнивания с другим системным действием для улучшенной производительности системы или потребляемой мощности. Например, приложение могло бы выполнять периодическую задачу каждые 5 минут с запасом времени до 30 секунд. Обратите внимание на то, что некоторая задержка должна ожидаться для всех таймеров, даже когда указано значение запаса времени нуля.

    Если источник таймера был уже отменен, вызывание этой функции не имеет никакого эффекта.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.6 и позже.

  • Тесты, был ли отменен данный источник отгрузки.

    Объявление

    Swift

    func dispatch_source_testcancel(_ source: dispatch_source_t!) -> Int

    Objective C

    long dispatch_source_testcancel ( dispatch_source_t source );

    Параметры

    source

    Источник отгрузки, который будет протестирован. Этот параметр не может быть NULL.

    Возвращаемое значение

    Ненулевой, если отменено и нуль, если не отмененный.

    Обсуждение

    Ваше приложение может использовать эту функцию, чтобы протестировать, был ли исходный объект отгрузки отменен вызовом к dispatch_source_cancel. Результат этой функции сразу является ненулевым после dispatch_source_cancel был вызван.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.6 и позже.

Отгрузка удобство I/O API позволяет Вам выполнить асинхронные операции чтения и операции записи на дескрипторах файлов. Этот API поддерживает семантику на основе потоков для доступа к содержанию дескриптора файла.

  • Запланируйте асинхронную операцию чтения с помощью указанного дескриптора файла.

    Объявление

    Swift

    func dispatch_read(_ fd: dispatch_fd_t, _ length: UInt, _ queue: dispatch_queue_t!, _ handler: ((dispatch_data_t!, Int32) -> Void)!)

    Objective C

    void dispatch_read ( dispatch_fd_t fd, size_t length, dispatch_queue_t queue, void (^handler)(dispatch_data_t data, int error) );

    Параметры

    fd

    Дескриптор файла, из которого можно считать данные.

    length

    Максимальная сумма данных для чтения из дескриптора файла.

    queue

    Очередь, на которой можно выполнить указанный блок обработчика.

    handler

    Блок для планирования для выполнения, когда указанный объем данных был считан или ошибка, произошел. Параметры обработчика следующие:

    • data - Данные, считанные из дескриптора файла. Этот объект содержит столько данных, сколько было в настоящее время доступно от дескриптора файла, до указанной длины. Когда обработчик возвращается, этот объект принадлежит системе и выпущен. Если Вы хотите продолжать использовать данные, Ваш обработчик должен сохранить этот объект или скопировать данные в другое расположение до возврата.

    • error - Это значение 0 если данные были считаны успешно, или EOF был достигнут. Если ошибка произошла, этот параметр содержит код ошибки.

    Обсуждение

    Это - функция удобства для инициирования единственной, асинхронной операции чтения от текущей позиции указанного дескриптора файла. Этот метод предназначается для простых операций, где Вы не нуждаетесь в издержках создания канала и не планируете издавание больше, чем несколько приказов, чтобы считать или записать данные. После того, как представленный, нет никакого способа отменить операцию чтения.

    После вызывания этой функции система берет под свой контроль указанный дескриптор файла, пока блок обработчика не ставится в очередь. В то время как это управляет дескриптором файла, система может изменить его от имени приложения. Например, система обычно добавляет O_NONBLOCK флаг, чтобы гарантировать, что любые операции неблокируют. В течение того времени это - ошибка для Вашего приложения для изменения дескриптора файла непосредственно. Однако можно передать дескриптор файла этой функции или dispatch_write функция для выполнения дополнительных чтений или записей. Можно также использовать дескриптор файла для создания новой отгрузки канал I/O.

    handler Вы обеспечиваете, не ставится в очередь для выполнения, пока не заканчивается операция чтения. Кроме того, если Вы выпускаете многократное чтение, или запись требует тот же дескриптор файла с помощью удобства APIs, все те операции должны завершиться, прежде чем любой из связанных обработчиков ставится в очередь. Если Вы уже используете дескриптор файла с другим каналом, необходимо использовать dispatch_io_read функционируйте, чтобы считать данные из канала, а не использовать эту функцию.

    При попытке читать мимо конца файла, Ваш обработчик передается пустой объект данных и код ошибки 0. Для других типов неисправимых ошибок надлежащий код ошибки возвращается вместе с любыми данными, был считан, прежде чем ошибка произошла.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.7 и позже.

  • Запланируйте асинхронную операцию записи с помощью указанного дескриптора файла.

    Объявление

    Swift

    func dispatch_write(_ fd: dispatch_fd_t, _ data: dispatch_data_t!, _ queue: dispatch_queue_t!, _ handler: ((dispatch_data_t!, Int32) -> Void)!)

    Objective C

    void dispatch_write ( dispatch_fd_t fd, dispatch_data_t data, dispatch_queue_t queue, void (^handler)(dispatch_data_t data, int error) );

    Параметры

    fd

    Дескриптор файла для использования при записи данных.

    data

    Данные для записи в дескриптор файла.

    queue

    Очередь, на которой можно выполнить указанный блок обработчика.

    handler

    Блок для планирования для выполнения один раз указанные данные был записан в дескриптор файла. Параметры обработчика следующие:

    • data - Данные, которые не могли быть записаны в дескриптор файла. Если данные были записаны успешно, этот параметр NULL.

    • error - Это значение 0 если данные были записаны успешно. Если ошибка произошла, этот параметр содержит код ошибки.

    Обсуждение

    Это - функция удобства для инициирования единственной, асинхронной операции записи в текущей позиции указанного дескриптора файла. Этот метод предназначается для простых операций, где Вы не нуждаетесь в издержках создания канала и не планируете издавание больше, чем несколько приказов, чтобы считать или записать данные. После того, как представленный, нет никакого способа отменить операцию записи.

    После вызывания этой функции система берет под свой контроль указанный дескриптор файла, пока блок обработчика не ставится в очередь. В то время как это управляет дескриптором файла, система может изменить его от имени приложения. Например, система обычно добавляет O_NONBLOCK флаг, чтобы гарантировать, что любые операции неблокируют. В течение того времени это - ошибка для Вашего приложения для изменения дескриптора файла непосредственно. Однако можно передать дескриптор файла этой функции или dispatch_read функция. Можно также использовать дескриптор файла для создания новой отгрузки канал I/O. Система оставляет управление дескриптора файла прежде, чем вызвать Ваш обработчик, таким образом, безопасно изменить дескриптор файла снова от Вашего кода обработчика.

    handler Вы обеспечиваете, не ставится в очередь для выполнения, пока не заканчивается операция записи. Кроме того, если Вы выпускаете многократное чтение, или запись требует тот же дескриптор файла с помощью удобства APIs, все те операции должны завершиться, прежде чем любой из связанных обработчиков ставится в очередь. Если Вы уже используете дескриптор файла с другим каналом, необходимо использовать dispatch_io_write функционируйте, чтобы записать данные в канал, а не использовать эту функцию.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.7 и позже.

Отгрузка канал I/O API позволяет Вам управлять основанными на дескрипторе файла операциями. Этот API поддерживает и семантику и произвольного доступа на основе потоков для доступа к содержанию дескриптора файла.

  • Создает отгрузку канал I/O и связывает его с указанным дескриптором файла.

    Объявление

    Swift

    func dispatch_io_create(_ type: dispatch_io_type_t, _ fd: dispatch_fd_t, _ queue: dispatch_queue_t!, _ cleanup_handler: ((Int32) -> Void)!) -> dispatch_io_t!

    Objective C

    dispatch_io_t dispatch_io_create ( dispatch_io_type_t type, dispatch_fd_t fd, dispatch_queue_t queue, void (^cleanup_handler)(int error) );

    Параметры

    type

    Тип канала для создания. Для списка возможных вариантов посмотрите Отгрузку Типы канала I/O.

    fd

    Дескриптор файла для соединения с каналом.

    queue

    Очередь отгрузки для соединения с каналом. Эта очередь используется для выполнения, канал очищают обработчик. Канал сохраняет эту очередь.

    cleanup_handler

    Блок для постановки в очередь, когда система оставляет управление дескриптора файла канала. Этот канал берет единственный параметр, указывающий причину, почему было оставлено управление. Если error параметр содержит не нулевое значение, управление было оставлено, потому что была ошибка при создании канала; иначе, это значение должно быть 0.

    Возвращаемое значение

    Отгрузка I/O образовывает канал или NULL если произошла ошибка. Возвращенный объект сохраняется, прежде чем он будет возвращен; это - Ваша ответственность закрыть канал и затем выпустить этот объект, когда Вы сделаны с помощью него.

    Обсуждение

    Вы используете эту функцию для создания отгрузки канал I/O для уже открытого дескриптора файла. После вызывания этой функции система берет под свой контроль указанный дескриптор файла, пока не происходит одно из следующего:

    • Вы закрываете канал путем вызова dispatch_io_close функция.

    • Неисправимая ошибка происходит на дескрипторе файла.

    • Все ссылки на канал выпущены.

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

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.7 и позже.

  • Создает отгрузку канал I/O со связанным путем.

    Объявление

    Swift

    func dispatch_io_create_with_path(_ type: dispatch_io_type_t, _ path: UnsafePointer<Int8>, _ oflag: Int32, _ mode: mode_t, _ queue: dispatch_queue_t!, _ cleanup_handler: ((Int32) -> Void)!) -> dispatch_io_t!

    Objective C

    dispatch_io_t dispatch_io_create_with_path ( dispatch_io_type_t type, const char *path, int oflag, mode_t mode, dispatch_queue_t queue, void (^cleanup_handler)(int error) );

    Параметры

    type

    Тип канала для создания. Для списка возможных вариантов посмотрите Отгрузку Типы канала I/O.

    path

    Путь файловой системы, чтобы открыться и использовать для канала I/O. Этот путь открыт с помощью open системный вызов.

    oflag

    Флаги для передачи open функционируйте при открытии пути.

    mode

    Режим для передачи open функционируйте при создании файла в указанном пути. Если Вы не создаете файл, указать 0.

    queue

    Очередь отгрузки для соединения с каналом. Эта очередь используется для выполнения, канал очищают обработчик. Канал сохраняет эту очередь.

    cleanup_handler

    Блок для постановки в очередь, когда система оставляет управление дескриптора файла канала. Этот канал берет единственный параметр, указывающий причину, почему было оставлено управление. Если error параметр содержит не нулевое значение, управление было оставлено, потому что была ошибка при создании канала; иначе, это значение должно быть 0.

    Возвращаемое значение

    Отгрузка I/O образовывает канал или NULL если произошла ошибка. Возвращенный объект сохраняется, прежде чем он будет возвращен; это - Ваша ответственность закрыть канал и затем выпустить этот объект, когда Вы сделаны с помощью него.

    Обсуждение

    Эта функция связывает указанный путь с каналом, но не открывает дескриптор файла для того пути, пока Вы не выполняете первую операцию I/O. В то время как это открыто, каналу принадлежит дескриптор файла. Когда одно из следующего происходит, канал закрывает дескриптор файла и вызывает его обработчик очистки:

    • Вы закрываете канал путем вызова dispatch_io_close функция.

    • Неисправимая ошибка происходит на дескрипторе файла.

    • Все ссылки на канал выпущены.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.7 и позже.

  • Создает новую отгрузку канал I/O из существующего канала.

    Объявление

    Swift

    func dispatch_io_create_with_io(_ type: dispatch_io_type_t, _ io: dispatch_io_t!, _ queue: dispatch_queue_t!, _ cleanup_handler: ((Int32) -> Void)!) -> dispatch_io_t!

    Objective C

    dispatch_io_t dispatch_io_create_with_io ( dispatch_io_type_t type, dispatch_io_t io, dispatch_queue_t queue, void (^cleanup_handler)(int error) );

    Параметры

    type

    Тип канала для создания. Для списка возможных вариантов посмотрите Отгрузку Типы канала I/O.

    io

    Существующий канал, дескриптор файла которого или путь Вы хотите использовать.

    queue

    Очередь отгрузки для соединения с каналом. Эта очередь используется для выполнения, канал очищают обработчик. Канал сохраняет эту очередь.

    cleanup_handler

    Блок для постановки в очередь, когда система оставляет управление дескриптора файла канала. Этот канал берет единственный параметр, указывающий причину, почему было оставлено управление. Если error параметр содержит не нулевое значение, управление было оставлено, потому что была ошибка при создании канала; иначе, это значение должно быть 0.

    Возвращаемое значение

    Отгрузка I/O образовывает канал или NULL если произошла ошибка. Возвращенный объект сохраняется, прежде чем он будет возвращен; это - Ваша ответственность закрыть канал и затем выпустить этот объект, когда Вы сделаны с помощью него.

    Обсуждение

    Эта функция создает новую отгрузку канал I/O, наследовавший дескриптор файла или путь указанного канала, но чей тип канала и политики можно установить, чтобы отличаться.

    Если существующий канал связан с дескриптором файла, система обеспечивает контроль над дескриптором файла, пока новый канал также не закрывается, ошибка происходит на дескрипторе файла, или выпущены все ссылки на каналы, связанные к тому дескриптору файла. Когда дескриптор файла выпущен, cleanup_handler блок ставится в очередь на указанном queue и система оставляет управление дескриптором файла.

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

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.7 и позже.

  • Планирует асинхронную операцию чтения на указанный канал.

    Объявление

    Swift

    func dispatch_io_read(_ channel: dispatch_io_t!, _ offset: off_t, _ length: UInt, _ queue: dispatch_queue_t!, _ io_handler: dispatch_io_handler_t!)

    Objective C

    void dispatch_io_read ( dispatch_io_t channel, off_t offset, size_t length, dispatch_queue_t queue, dispatch_io_handler_t io_handler );

    Параметры

    channel

    Канал для использования при чтении данных.

    offset

    Для каналов случайного доступа этот параметр указывает смещение в канал, из которого можно читать. Смещение указано относительно начального указателя файла дескриптора файла канала в то время, когда создавался канал.

    Для каналов на основе потоков проигнорирован этот параметр, и данные считаны из текущей позиции.

    length

    Число байтов для чтения из канала. Указать SIZE_MAX чтобы продолжать считывать данные до, EOF достигнут.

    queue

    Очередь отгрузки, на которой можно подчиниться io_handler блок.

    io_handler

    Блок для использования для обработки данных читал из канала. Этот блок может быть поставлен в очередь многократно для обработки запроса определенных данных. Каждый раз блок ставится в очередь, data параметр, переданный обработчику, содержит последний раз блок чтения данных.

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

    Обсуждение

    Эта функция считывает указанные данные и подчиняется io_handler блокируйте к queue обрабатывать данные. Если done параметр обработчика устанавливается на NOfalse, это означает, что только была считана часть данных. Если done параметр устанавливается на YEStrue, это означает, что операция чтения завершена, и обработчик не будет представлен снова. Если неисправимая ошибка происходит на дескрипторе файла канала, done параметр устанавливается на YEStrue и о надлежащем ошибочном значении сообщают в обработчике error параметр.

    Если обработчик представлен с done набор параметра к YEStrue, пустой объект данных и код ошибки 0, это означает, что канал достиг конца файла.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.7 и позже.

  • Планирует асинхронную операцию записи для указанного канала.

    Объявление

    Swift

    func dispatch_io_write(_ channel: dispatch_io_t!, _ offset: off_t, _ data: dispatch_data_t!, _ queue: dispatch_queue_t!, _ io_handler: dispatch_io_handler_t!)

    Objective C

    void dispatch_io_write ( dispatch_io_t channel, off_t offset, dispatch_data_t data, dispatch_queue_t queue, dispatch_io_handler_t io_handler );

    Параметры

    channel

    Канал для использования при записи данных.

    offset

    Для каналов случайного доступа этот параметр указывает смещение в канал, в котором можно записать. Смещение указано относительно начального указателя файла дескриптора файла канала в то время, когда создавался канал.

    Для каналов на основе потоков проигнорирован этот параметр, и данные записаны в текущую позицию.

    data

    Данные для записи в канал.

    queue

    Очередь отгрузки, на которой можно подчиниться io_handler блок.

    io_handler

    Блок для использования для создания отчетов о любом прогрессе. Этот блок может быть поставлен в очередь многократно для обработки запроса определенных данных. Каждый раз блок ставится в очередь, data параметр, переданный обработчику, содержит данные, остающиеся быть записанными.

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

    Обсуждение

    Эта функция пишет указанные данные и подчиняется io_handler блокируйте к queue сообщить относительно прогресса работы. Если done параметр обработчика устанавливается на NOfalse, это означает, что только была записана часть данных. Если done параметр устанавливается на YEStrue, это означает, что операция записи завершена, и обработчик не будет представлен снова. Если работа была успешна, обработчик error параметр устанавливается на 0. Однако, если неисправимая ошибка происходит на дескрипторе файла канала, done параметр устанавливается на YEStrue и о надлежащем ошибочном значении сообщают в обработчике error параметр.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.7 и позже.

  • Закрывает указанный канал к новым операциям чтения и операциям записи.

    Объявление

    Swift

    func dispatch_io_close(_ channel: dispatch_io_t!, _ flags: dispatch_io_close_flags_t)

    Objective C

    void dispatch_io_close ( dispatch_io_t channel, dispatch_io_close_flags_t flags );

    Параметры

    channel

    Канал для закрытия.

    flags

    Опции использовать при закрытии канала. Для списка возможных значений посмотрите, что Канал Закрывает Опции.

    Обсуждение

    После вызывания этой функции Вы не должны больше планировать операции чтения или операции записи на канале. Выполнение так заставит ошибку быть отправленной в Ваш обработчик.

    Если DISPATCH_IO_STOP опция указана в flags параметр, система пытается прервать любые выдающиеся операции чтения и операции записи на канале I/O. Даже при указании этого флага соответствующие обработчики могут быть вызваны с частичными результатами. Кроме того, заключительный вызов обработчика будет передан ECANCELED код ошибки, чтобы указать, что была прервана работа. Если Вы не указываете DISPATCH_IO_STOP флаг, операции чтения и операции записи на канале, выполненном к завершению как нормальное.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.7 и позже.

  • Планирует работу барьера на указанный канал.

    Объявление

    Swift

    func dispatch_io_barrier(_ channel: dispatch_io_t!, _ barrier: dispatch_block_t!)

    Objective C

    void dispatch_io_barrier ( dispatch_io_t channel, dispatch_block_t barrier );

    Параметры

    channel

    Канал, на который Вы хотите запланировать барьер.

    barrier

    Блок для выполнения, когда завершились все ранее запланированные операции на канале.

    Обсуждение

    Работа барьера является способом гарантировать, что никакие новые связанные с каналом операции не будут выполняться, пока все предыдущие операции не завершились и указанное barrier блок был выполнен. Работа барьера применяется к дескриптору файла канала а не к определенному каналу. Другими словами, если многократные каналы связаны с тем же дескриптором файла, работа барьера, запланированная на какое-либо из действий каналов как барьер через все каналы. Все ранее запланированные операции на любом из тех каналов должны завершиться, прежде чем блок барьера выполняется.

    В то время как блок барьера работает, он может безопасно воздействовать на базовое использование дескриптора файла канала fsync, lseek, и подобные функции, но блок не должны закрывать дескриптор файла.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.7 и позже.

  • Определяет максимальный номер байтов для обработки перед постановкой в очередь блок обработчика.

    Объявление

    Swift

    func dispatch_io_set_high_water(_ channel: dispatch_io_t!, _ high_water: UInt)

    Objective C

    void dispatch_io_set_high_water ( dispatch_io_t channel, size_t high_water );

    Параметры

    channel

    Канал, высшую точку которого Вы хотите сконфигурировать.

    high_water

    Максимальное количество байтов, чтобы читать или записать перед постановкой в очередь соответствующий блок обработчика I/O.

    Обсуждение

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

    Высшая точка по умолчанию для каналов установлена в SIZE_MAX.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.7 и позже.

    См. также

    dispatch_io_set_low_water

  • Определяет минимальный номер байтов для обработки перед постановкой в очередь блок обработчика.

    Объявление

    Swift

    func dispatch_io_set_low_water(_ channel: dispatch_io_t!, _ low_water: UInt)

    Objective C

    void dispatch_io_set_low_water ( dispatch_io_t channel, size_t low_water );

    Параметры

    channel

    Канал, низкий водяной знак которого Вы хотите сконфигурировать.

    low_water

    Минимальное число байтов, чтобы читать или записать перед постановкой в очередь соответствующий блок обработчика I/O.

    Обсуждение

    Во время операции чтения или операции записи, канал использует верхний уровень - и значения низкого водяного знака, чтобы определить, как часто ставить в очередь связанный блок обработчика. Когда число чтения байтов или записанный между этими двумя значениями, это ставит в очередь блок. Единственные времена, когда число байтов может быть меньше, чем низкий водяной знак, - когда EOF достигнут, или интервал канала имеет DISPATCH_IO_STRICT_INTERVAL флаг установлен.

    На практике Ваши обработчики должны быть разработаны для обработки блоков данных, которые значительно больше, чем текущий низкий водяной знак. Если Вы всегда хотите обработать тот же объем данных в своем обработчике, установите нижний уровень - и высшие точки к тому же значению.

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

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.7 и позже.

    См. также

    dispatch_io_set_high_water

  • Устанавливает интервал (в наносекундах), в котором можно вызвать обработчики I/O для канала.

    Объявление

    Swift

    func dispatch_io_set_interval(_ channel: dispatch_io_t!, _ interval: UInt64, _ flags: dispatch_io_interval_flags_t)

    Objective C

    void dispatch_io_set_interval ( dispatch_io_t channel, uint64_t interval, dispatch_io_interval_flags_t flags );

    Параметры

    channel

    Канал, интервал которого Вы хотите сконфигурировать.

    interval

    Число наносекунд, которые должны протечь перед планированием любых обработчиков I/O, желаемо.

    flags

    Флаги, указывающие желаемое поведение поставки во время интервала. Для списка флагов посмотрите Опции Конфигурации канала.

    Обсуждение

    Интервал канала является способом для Вас получить периодические отчеты о ходе работ о состоянии операции чтения или операции записи. Можно использовать эту обратную связь для обновления индикаторов выполнения или других частей приложения.

    При установке интервала на канале обработчики для любых операций чтения или операций записи ставятся в очередь в данном интервале, только если обработанный объем данных превышает текущий низкий водяной знак для канала. Передача DISPATCH_IO_STRICT_INTERVAL постоянный в flags даже если низкий водяной знак не превышен, параметр вызывает постановку в очередь обработчиков.

    Система может добавить мелкую сумму запаса времени к указанному интервалу для выравнивания поставки обработчиков с другим системным действием. Цель этого поведения состоит в том, чтобы улучшить общую производительность или потребляемую мощность для системы.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.7 и позже.

  • Возвращает дескриптор файла, связанный с указанным каналом.

    Объявление

    Swift

    func dispatch_io_get_descriptor(_ channel: dispatch_io_t!) -> dispatch_fd_t

    Objective C

    dispatch_fd_t dispatch_io_get_descriptor ( dispatch_io_t channel );

    Параметры

    channel

    Канал, дескриптор файла которого Вы хотите получить.

    Возвращаемое значение

    Дескриптор файла связался с каналом или -1 если дескриптор файла закрывается или еще не открытый.

    Обсуждение

    Если путь, связанный с каналом, еще не был открыт, вызывание этой функции обычно не открывает соответствующий файл за одним исключением. Если Вы вызываете функцию от блока барьера, запланированного на канал, функция действительно открывает файл и возвращает получающийся дескриптор файла.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.7 и позже.

Объекты данных отгрузки представляют интерфейс для управления основанным на памяти буфером данных. Клиенты, получающие доступ к буферу данных, рассматривают его как непрерывный блок памяти, но внутренне буфер может состоять из многократных несмежных блоков памяти.

  • Создает новый объект данных отгрузки с указанным буфером памяти.

    Объявление

    Swift

    func dispatch_data_create(_ buffer: UnsafePointer<Void>, _ size: UInt, _ queue: dispatch_queue_t!, _ destructor: dispatch_block_t!) -> dispatch_data_t!

    Objective C

    dispatch_data_t dispatch_data_create ( const void *buffer, size_t size, dispatch_queue_t queue, dispatch_block_t destructor );

    Параметры

    buffer

    Непрерывный буфер памяти, содержащей желаемые данные.

    size

    Размер buffer, измеренный в байтах.

    queue

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

    destructor

    Блок, ответственный за выпуск памяти, связался с объектом данных. Для списка констант, представляющих предоставленные системой деструкторы, посмотрите Константы Деструктора Данных.

    Возвращаемое значение

    Новый объект данных, содержащий желаемые данные. Этот объект сохраняется первоначально. Это - Ваша ответственность выпустить объект данных, когда Вы сделаны с помощью него.

    Если буфер NULL или размер 0, эта функция возвращает пустой объект отгрузки.

    Обсуждение

    Если Вы указываете деструктор по умолчанию с помощью DISPATCH_DATA_DESTRUCTOR_DEFAULT постоянный, эта функция создает копию данных в buffer и управляет теми данными внутренне. При указании какого-либо другого значения эта функция хранит указатель на буфер и оставляет ответственность выпуска того буфера к деструктору, который Вы обеспечиваете.

    При выпуске последней ссылки на объект система обычно ставит в очередь блок в destructor на предоставленной очереди. Однако, если Вы указываете DISPATCH_DATA_DESTRUCTOR_FREE постоянный для деструктора, система просто освобождает связанную встроенную память.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.7 и позже.

  • Возвращает логический размер памяти, которой управляет объект данных отгрузки

    Объявление

    Swift

    func dispatch_data_get_size(_ data: dispatch_data_t!) -> UInt

    Objective C

    size_t dispatch_data_get_size ( dispatch_data_t data );

    Параметры

    data

    Объект данных отгрузки запросить

    Возвращаемое значение

    Число байтов, представленных по условию, возражает.

    Обсуждение

    Для объектов данных, представляющих многократные области памяти состоящие из нескольких несмежных участков, размер, о котором сообщает эта функция, является суммой размеров отдельных областей.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.7 и позже.

  • Возвращает новый объект данных отгрузки, содержащий непрерывное представление памяти указанного объекта.

    Объявление

    Swift

    func dispatch_data_create_map(_ data: dispatch_data_t!, _ buffer_ptr: UnsafeMutablePointer<UnsafePointer<Void>>, _ size_ptr: UnsafeMutablePointer<UInt>) -> dispatch_data_t!

    Objective C

    dispatch_data_t dispatch_data_create_map ( dispatch_data_t data, const void **buffer_ptr, size_t *size_ptr );

    Параметры

    data

    Объект данных отгрузки, содержащий память для отображения. Если объект содержит многократные области памяти состоящие из нескольких несмежных участков, те области копируются в единственную, непрерывную область памяти для нового объекта.

    buffer_ptr

    На вводе, указателе на переменную, в которой можно сохранить указатель на область памяти для недавно создаваемого объекта данных отгрузки. Можно указать NULL для этого параметра, если Вам не нужна информация.

    size_ptr

    На вводе, указателе на переменную, в которой можно сохранить размер непрерывной области памяти в недавно создаваемом объекте данных отгрузки. Можно указать NULL для этого параметра, если Вам не нужна информация.

    Возвращаемое значение

    Новый объект данных отгрузки, содержащий непрерывную версию памяти, которой управляет объект в data параметр.

    Обсуждение

    Если Вы указываете не -NULL значения для buffer_ptr или size_ptr, значения, возвращенные в тех переменных, допустимы только, пока Вы не выпускаете недавно создаваемый объект данных отгрузки. Можно использовать эти значения в качестве быстрого способа получить доступ к данным нового объекта данных.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.7 и позже.

  • Возвращает новый объект данных отгрузки, состоящий из связанных данных от двух других объектов данных.

    Объявление

    Swift

    func dispatch_data_create_concat(_ data1: dispatch_data_t!, _ data2: dispatch_data_t!) -> dispatch_data_t!

    Objective C

    dispatch_data_t dispatch_data_create_concat ( dispatch_data_t data1, dispatch_data_t data2 );

    Параметры

    data1

    Первый объект данных включать. Память от этого объекта помещается в начале области памяти нового объекта данных.

    data2

    Второй объект данных включать. Память от этого объекта добавляется до конца памяти от data1.

    Возвращаемое значение

    Новый объект данных отгрузки, содержащий связанную память.

    Обсуждение

    После вызывания этой функции безопасно выпустить любой из объектов в data1 или data2. Однако знайте, что память от тех объектов не может быть освобождена, если недавно создаваемый объект данных отгрузки ссылается на нее, в противоположность копиям она.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.7 и позже.

  • Возвращает новый объект данных отгрузки, содержание которого состоит из части области памяти другого объекта.

    Объявление

    Swift

    func dispatch_data_create_subrange(_ data: dispatch_data_t!, _ offset: UInt, _ length: UInt) -> dispatch_data_t!

    Objective C

    dispatch_data_t dispatch_data_create_subrange ( dispatch_data_t data, size_t offset, size_t length );

    Параметры

    data

    Объект данных отгрузки, содержащий исходную память для использования для нового объекта.

    offset

    Байтовое смещение в память data. Это смещение отмечает начальную точку памяти для нового объекта.

    length

    Число байтов от offset включать в новый объект.

    Возвращаемое значение

    Новый объект данных отгрузки, память которого является поддиапазоном памяти, связанной с объектом в data параметр.

    Обсуждение

    После вызывания этой функции безопасно выпустить объект в data. Однако знайте, что память от того объекта не может быть сразу освобождена, если недавно создаваемый объект данных отгрузки ссылается на него, в противоположность копиям это.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.7 и позже.

  • Пересекает память объекта данных отгрузки и выполняет пользовательский код каждой области.

    Объявление

    Swift

    func dispatch_data_apply(_ data: dispatch_data_t!, _ applier: dispatch_data_applier_t!) -> Bool

    Objective C

    bool dispatch_data_apply ( dispatch_data_t data, dispatch_data_applier_t applier );

    Параметры

    data

    Объект отгрузки, память которого Вы хотите использовать.

    applier

    Блок для работы каждой непрерывной области памяти data.

    Возвращаемое значение

    Булевская переменная, указывающая, завершился ли обход успешно. Как правило, это значение true если блок applier выполнялся на всех областях или не было ничего для пересечения. Если это false, это означает, что блок завершил обход рано.

    Обсуждение

    Для каждой непрерывной области памяти эта функция создает временный объект данных отгрузки и передает ее указанной функции applier. Этот новый объект, плюс другие параметры к блоку, обеспечивает прямой доступ к определенной исследуемой области памяти. Один раз блочные возвраты applier, временный объект данных отгрузки выпущен. (Исходный объект в data параметр не затронут.)

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.7 и позже.

  • Возвращает объект данных, содержащий часть данных в другом объекте данных.

    Объявление

    Swift

    func dispatch_data_copy_region(_ data: dispatch_data_t!, _ location: UInt, _ offset_ptr: UnsafeMutablePointer<UInt>) -> dispatch_data_t!

    Objective C

    dispatch_data_t dispatch_data_copy_region ( dispatch_data_t data, size_t location, size_t *offset_ptr );

    Параметры

    data

    Объект данных отгрузки запросить.

    location

    Байтовое смещение для использования при определении, который область памяти возвратиться.

    offset_ptr

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

    Возвращаемое значение

    Объект данных отгрузки, содержащий копию всей области памяти, содержащей указанное расположение.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.7 и позже.

  • Создает a dispatch_time_t относительно часов по умолчанию или изменяет существующее dispatch_time_t.

    Объявление

    Swift

    func dispatch_time(_ when: dispatch_time_t, _ delta: Int64) -> dispatch_time_t

    Objective C

    dispatch_time_t dispatch_time ( dispatch_time_t when, int64_t delta );

    Параметры

    when

    dispatch_time_t значение для использования в качестве основания для нового значения. Передача DISPATCH_TIME_NOW создать новую временную стоимость относительно теперь.

    delta

    Число наносекунд для добавления ко времени в when параметр.

    Возвращаемое значение

    Новое dispatch_time_t.

    Обсуждение

    Часы по умолчанию основываются mach_absolute_time.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.6 и позже.

  • Создает a dispatch_time_t использование абсолютного времени согласно настенным часам.

    Объявление

    Swift

    func dispatch_walltime(_ when: UnsafePointer<timespec>, _ delta: Int64) -> dispatch_time_t

    Objective C

    dispatch_time_t dispatch_walltime ( const struct timespec *when, int64_t delta );

    Параметры

    when

    A struct timespec добавить время к. Если NULL передается, тогда эта функция использует результат gettimeofday.

    delta

    Наносекунды для добавления.

    Возвращаемое значение

    Новое dispatch_time_t.

    Обсуждение

    Настенные часы основываются gettimeofday.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.6 и позже.

  • Устанавливает данные ключа/значения для указанной очереди отгрузки.

    Объявление

    Swift

    func dispatch_queue_set_specific(_ queue: dispatch_queue_t!, _ key: UnsafePointer<Void>, _ context: UnsafeMutablePointer<Void>, _ destructor: dispatch_function_t)

    Objective C

    void dispatch_queue_set_specific ( dispatch_queue_t queue, const void *key, void *context, dispatch_function_t destructor );

    Параметры

    queue

    Очередь, по которой можно установить указанные данные ключа/значения. Этот параметр не должен быть NULL.

    key

    Ключ Вы хотите использовать для идентификации связанных данных контекста. Ключи только сравнены как указатели и никогда не разыменовываются. Таким образом можно использовать указатель на статическую переменную для определенной подсистемы или любого другого значения, позволяющего Вам идентифицировать значение уникально. Указание указателя на строковую константу не рекомендуется. NULL не допустимое значение для ключа и попыток установить данные контекста с a NULL ключ проигнорирован.

    context

    Данные контекста для соединения с key. Этот параметр может быть NULL.

    destructor

    Функция деструктора, которую можно использовать для выпуска данных контекста. Этот параметр может быть NULL. Если context NULL, Ваша функция деструктора проигнорирована.

    Обсуждение

    Используйте этот метод для соединения пользовательских данных контекста с очередью отгрузки. Блоки, выполняющиеся на очереди, могут использовать dispatch_get_specific функция для получения этих данных, в то время как они работают.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.7 и позже.

    См. также

    dispatch_queue_get_specific

  • Получает значение для ключа, связанного с указанной очередью отгрузки.

    Объявление

    Swift

    func dispatch_queue_get_specific(_ queue: dispatch_queue_t!, _ key: UnsafePointer<Void>) -> UnsafeMutablePointer<Void>

    Objective C

    void * dispatch_queue_get_specific ( dispatch_queue_t queue, const void *key );

    Параметры

    queue

    Очередь, содержащая желаемые данные контекста. Этот параметр не должен быть NULL.

    key

    Ключ, идентифицирующий связанные данные контекста. Ключи только сравнены как указатели и никогда не разыменовываются. Таким образом можно использовать указатель на статическую переменную для определенной подсистемы или любого другого значения, позволяющего Вам идентифицировать значение уникально. Указание указателя на строковую константу не рекомендуется.

    Возвращаемое значение

    Данные контекста связались с key или NULL если не был найден никакой контекст.

    Обсуждение

    Можно использовать этот метод для связывания данных контекста с определенной очередью отгрузки. Блоки, выполняющиеся на очереди, могут использовать dispatch_get_specific функция для получения контекста связалась с той определенной очередью вместо этого.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.7 и позже.

    См. также

    dispatch_queue_set_specific

  • Возвращает значение для ключа, связанного с текущей очередью отгрузки.

    Объявление

    Swift

    func dispatch_get_specific(_ key: UnsafePointer<Void>) -> UnsafeMutablePointer<Void>

    Objective C

    void * dispatch_get_specific ( const void *key );

    Параметры

    key

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

    Возвращаемое значение

    Значение контекста для указанного ключа; иначе NULL если ключ не был установлен для очереди (или ее целевая очередь), или очередь является глобальной параллельной очередью.

    Обсуждение

    Эта функция предназначается, чтобы быть вызванной от блока, выполняющегося в очереди отгрузки. Вы используете его для получения данных контекста, связанных с очередью. Вызов этого метода от кода, не работающего в очереди отгрузки, возвращается NULL потому что нет никакой очереди для обеспечения контекста.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.7 и позже.

Типы данных

  • Прототип блоков подчинился для диспетчеризации очередей, не берущих параметров и не имеющих никакого возвращаемого значения.

    Объявление

    Swift

    typealias dispatch_block_t = () -> Void

    Objective C

    typedef void (^dispatch_block_t)( void);

    Обсуждение

    Объявление блока выделяет хранение на штабеле. Поэтому этот пример демонстрирует недопустимую конструкцию:

    • dispatch_block_t block;
    • if (x) {
    • block = ^{printf("true\n"); };
    • } else {
    • block = ^{printf("false\n"); };
    • }
    • block(); // unsafe!!

    Что происходит негласно:

    • if (x) {
    • struct Block __tmp_1 = ...; // setup details
    • block = &__tmp_1;
    • } else {
    • struct Block __tmp_2 = ...; // setup details
    • block = &__tmp_2;
    • }

    Как пример демонстрирует, адрес переменной штабеля выходит из объема, в котором это выделяется.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.6 и позже.

  • Прототип функций подчинился для диспетчеризации очередей.

    Объявление

    Swift

    typealias dispatch_function_t = CFunctionPointer<((UnsafeMutablePointer<Void>) -> Void)>

    Objective C

    typedef void (*dispatch_function_t)(void *);

    Обсуждение

    Функции, берущие a dispatch_function_t введите в качестве параметра также берут указатель на контекстные данные, которые Вы предоставляете. Когда Ваша функция отгрузки вызвана, указатель, к которому контекстные данные передаются как параметр функции. Указатель на контекстные данные передается неизмененный Вашей функции, и это - Ваша ответственность гарантировать, что указатель допустим.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.6 и позже.

  • Группа блочных объектов подчинилась очереди для асинхронного вызова.

    Объявление

    Swift

    typealias dispatch_group_t = NSObject

    Objective C

    typedef struct dispatch_group_s *dispatch_group_t;

    Обсуждение

    Группа отгрузки является механизмом для контроля ряда блоков. Ваше приложение может контролировать блоки в группе синхронно или асинхронно в зависимости от Ваших потребностей. Расширением группа может быть полезна для синхронизации для кода, зависящего от завершения других задач.

    Обратите внимание на то, что блоки в группе могут быть выполнены на различных очередях, и каждый отдельный блок может добавить больше блоков к группе.

    Группа отгрузки отслеживает то, сколько блоков является выдающимся, и GCD сохраняет группу до всех ее связанных блоков полное выполнение.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.6 и позже.

  • Полиморфный тип объекта для использования с для использования со всем GCD диспетчеризирует объектные функции.

    Объявление

    Objective C

    typedef union { struct dispatch_object_s *_do; struct dispatch_continuation_s *_dc; struct dispatch_queue_s *_dq; struct dispatch_queue_attr_s *_dqa; struct dispatch_group_s *_dg; struct dispatch_source_s *_ds; struct dispatch_source_attr_s *_dsa; struct dispatch_semaphore_s *_dsema; struct dispatch_data_s *_ddata; struct dispatch_io_s *_dchannel; struct dispatch_operation_s *_doperation; struct dispatch_fld_s *_dfld; } dispatch_object_t __attribute__((transparent_union));

    Обсуждение

    Отгрузка возражает функциям доли для координирования управления памятью, приостановки, отмены и указателей контекста. Объекты, возвращенные функциями создания в платформе отгрузки, могут быть унифицированно сохранены и выпущены с dispatch_retain и dispatch_release функции, соответственно. GCD не гарантирует, что у любого данного клиента есть последнее или только ссылочный к данному объекту. Объекты могут быть сохранены внутренне системой.

    Оператор импорта

  • Предикат для использования с dispatch_once функция.

    Объявление

    Swift

    typealias dispatch_once_t = Int

    Objective C

    typedef long dispatch_once_t;

    Обсуждение

    Переменные этого типа должны иметь глобальную область видимости или статический контекст. Результат использования этого типа с автоматическим или динамическим выделением не определен. Посмотрите dispatch_once для подробных данных.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.6 и позже.

  • Очередь отгрузки является легким объектом, которому Ваше приложение представляет блоки для последующего выполнения.

    Объявление

    Swift

    typealias dispatch_queue_t = NSObject

    Objective C

    typedef struct dispatch_queue_s *dispatch_queue_t;

    Обсуждение

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

    Глобальные параллельные очереди вызывают блоки в порядке FIFO, но не ожидают их завершения, позволяя многократным блокам быть вызванными одновременно.

    Система управляет пулом потоков, обрабатывающих очереди отгрузки и вызывающих блоки, представленные им. Концептуально, у очереди отгрузки может быть свой собственный поток выполнения, и взаимодействие между очередями является очень асинхронным.

    Очереди отгрузки являются ссылкой, считаемой через вызовы к dispatch_retain и dispatch_release. Незаконченные блоки, представленные очереди также, содержат ссылку на очередь, пока они не закончили. Как только все ссылки на очередь были выпущены, очередь будет освобождена системой.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.6 и позже.

  • Несколько абстрактное представление времени.

    Объявление

    Swift

    typealias dispatch_time_t = UInt64

    Objective C

    typedef uint64_t dispatch_time_t;

    Обсуждение

    Для списка возможных значений посмотрите Временные константы Отгрузки.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.6 и позже.

  • Идентификатор для объекта системы типов, контролируемого источником отгрузки.

    Объявление

    Swift

    typealias dispatch_source_type_t = COpaquePointer

    Objective C

    typedef const struct dispatch_source_type_s *dispatch_source_type_t;

    Обсуждение

    Константы этого типа представляют класс низкоуровневого системного объекта, контролирующегося источником отгрузки. Константы этого типа передаются в качестве параметра dispatch_source_create и определите, как параметр дескриптора интерпретируется (как дескриптор файла, порт Маха, сигнальное число, идентификатор процесса, и т.д.) и как интерпретируется параметр маски. Посмотрите Исходные Константы Типа Отгрузки для подробных данных об исходных константах типа.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.6 и позже.

  • Дескриптор файла используется для операций I/O.

    Объявление

    Swift

    typealias dispatch_fd_t = Int32

    Objective C

    typedef int dispatch_fd_t;

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.7 и позже.

  • Неизменный объект, представляющий непрерывную или редкую область памяти.

    Объявление

    Swift

    typealias dispatch_data_t = NSObject

    Objective C

    typedef dispatch_data_s *dispatch_data_t;

    Обсуждение

    Любой прямой доступ к памяти в объекте данных не должен изменять ту память.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.7 и позже.

  • Блок для вызова для каждой непрерывной области памяти в объекте данных.

    Объявление

    Swift

    typealias dispatch_data_applier_t = (dispatch_data_t!, UInt, UnsafePointer<Void>, UInt) -> Bool

    Objective C

    typedef bool (^dispatch_data_applier_t)(dispatch_data_t region, size_t offset, const void *buffer, size_t size);

    Обсуждение

    Параметры данных отгрузки applier блок следующие:

    • region - Объект данных, содержащий текущую проанализированную область памяти.

    • offset - Логическое смещение к текущей области от запуска объекта данных.

    • buffer - Указатель на память для текущей области.

    • size - Размер памяти для текущей области.

    Этот обработчик возвращает булево значение, указывающее, должен ли продолжаться обход области.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.7 и позже.

  • Отгрузка канал I/O.

    Объявление

    Swift

    typealias dispatch_io_t = NSObject

    Objective C

    typedef dispatch_io_s *dispatch_io_t;

    Обсуждение

    Отгрузка канал I/O представляет дескриптор файла и асинхронные политики I/O, применилась к тому дескриптору файла. Отгрузка канал I/O является стандартным типом объекта отгрузки и может быть сохранен, выпущен, приостановлен и возобновлен соответственно.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.7 и позже.

  • Блок обработчика раньше обрабатывал операции на отгрузке канал I/O.

    Объявление

    Swift

    typealias dispatch_io_handler_t = (Bool, dispatch_data_t!, Int32) -> Void

    Objective C

    typedef void (^dispatch_io_handler_t)(bool done, dispatch_data_t data, int error);

    Обсуждение

    Параметры отгрузки обработчик I/O следующие:

    • done - Флаг, указывающий, завершена ли работа.

    • data - Объект данных, который будет обработан. Когда блок обработчика возвращается, этот объект сохраняется системой на время выполнения обработчика и выпущен.

    • error - Код ошибки (если таковые имеются) сообщил для работы. Код ошибки 0 обычно указывает, что работа была успешна.

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.7 и позже.

  • Тип отгрузки канал I/O

    Объявление

    Swift

    typealias dispatch_io_type_t = UInt

    Objective C

    typedef unsigned long dispatch_io_type_t;

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.7 и позже.

  • Тип для флагов раньше указывал заключительные опции для канала.

    Объявление

    Swift

    typealias dispatch_io_close_flags_t = UInt

    Objective C

    typedef unsigned long dispatch_io_close_flags_t;

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.7 и позже.

  • Тип для флагов раньше указывал интервал отгрузки канала.

    Объявление

    Swift

    typealias dispatch_io_interval_flags_t = UInt

    Objective C

    typedef unsigned long dispatch_io_interval_flags_t;

    Оператор импорта

    Objective C

    @import Dispatch;

    Swift

    import Dispatch

    Доступность

    Доступный в OS X v10.7 и позже.

Константы

  • Используемый для выбора соответствующей глобальной параллельной очереди.

    Объявление

    Objective C

    #define DISPATCH_QUEUE_PRIORITY_HIGH 2 #define DISPATCH_QUEUE_PRIORITY_DEFAULT 0 #define DISPATCH_QUEUE_PRIORITY_LOW (-2) #define DISPATCH_QUEUE_PRIORITY_BACKGROUND INT16_MIN

    Константы

    • DISPATCH_QUEUE_PRIORITY_HIGH

      DISPATCH_QUEUE_PRIORITY_HIGH

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

      Доступный в OS X v10.7 и позже.

    • DISPATCH_QUEUE_PRIORITY_DEFAULT

      DISPATCH_QUEUE_PRIORITY_DEFAULT

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

      Доступный в OS X v10.7 и позже.

    • DISPATCH_QUEUE_PRIORITY_LOW

      DISPATCH_QUEUE_PRIORITY_LOW

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

      Доступный в OS X v10.7 и позже.

    • DISPATCH_QUEUE_PRIORITY_BACKGROUND

      DISPATCH_QUEUE_PRIORITY_BACKGROUND

      Элементы, диспетчеризированные очереди, работают в фоновом приоритете; очередь планируется для выполнения после того, как все высокоприоритетные очереди были запланированы и системные элементы выполнений на потоке, приоритет которого установлен для фонового состояния. Такой поток имеет самый низкий приоритет и любой диск, I/O регулируют для минимизации влияния на систему.

      Доступный в OS X v10.7 и позже.

  • Мах отправляет флаги события.

    Объявление

    Objective C

    #define DISPATCH_MACH_SEND_DEAD 0x1

    Константы

    • DISPATCH_MACH_SEND_DEAD

      DISPATCH_MACH_SEND_DEAD

      Получить право, соответствующее данному, отправляет, право было уничтожено.

      Доступный в OS X v10.7 и позже.

  • Флаги события процесса.

    Объявление

    Objective C

    #define DISPATCH_PROC_EXIT 0x80000000 #define DISPATCH_PROC_FORK 0x40000000 #define DISPATCH_PROC_EXEC 0x20000000 #define DISPATCH_PROC_SIGNAL 0x08000000

    Константы

    • DISPATCH_PROC_EXIT

      DISPATCH_PROC_EXIT

      Процесс вышел (возможно, чисто, возможно не).

      Доступный в OS X v10.7 и позже.

    • DISPATCH_PROC_FORK

      DISPATCH_PROC_FORK

      Процесс создал один или несколько дочерних процессов.

      Доступный в OS X v10.7 и позже.

    • DISPATCH_PROC_EXEC

      DISPATCH_PROC_EXEC

      Процесс стал другим исполнимым изображением через exec или posix_spawn функциональный вызов семьи.

      Доступный в OS X v10.7 и позже.

    • DISPATCH_PROC_SIGNAL

      DISPATCH_PROC_SIGNAL

      Сигнал Unix был поставлен процессу.

      Доступный в OS X v10.7 и позже.

  • Флаги события объекта файловой системы.

    Объявление

    Objective C

    #define DISPATCH_VNODE_DELETE 0x1 #define DISPATCH_VNODE_WRITE 0x2 #define DISPATCH_VNODE_EXTEND 0x4 #define DISPATCH_VNODE_ATTRIB 0x8 #define DISPATCH_VNODE_LINK 0x10 #define DISPATCH_VNODE_RENAME 0x20 #define DISPATCH_VNODE_REVOKE 0x40

    Константы

    • DISPATCH_VNODE_DELETE

      DISPATCH_VNODE_DELETE

      Объект файловой системы был удален из пространства имен.

      Доступный в OS X v10.7 и позже.

    • DISPATCH_VNODE_WRITE

      DISPATCH_VNODE_WRITE

      Данные объектов файловой системы изменились.

      Доступный в OS X v10.7 и позже.

    • DISPATCH_VNODE_EXTEND

      DISPATCH_VNODE_EXTEND

      Объект файловой системы изменился в размере.

      Доступный в OS X v10.7 и позже.

    • DISPATCH_VNODE_ATTRIB

      DISPATCH_VNODE_ATTRIB

      Метаданные объекта файловой системы изменились.

      Доступный в OS X v10.7 и позже.

    • DISPATCH_VNODE_LINK

      DISPATCH_VNODE_LINK

      Количество связывания объектов файловой системы изменилось.

      Доступный в OS X v10.7 и позже.

    • DISPATCH_VNODE_RENAME

      DISPATCH_VNODE_RENAME

      Объект файловой системы был переименован в пространстве имен.

      Доступный в OS X v10.7 и позже.

    • DISPATCH_VNODE_REVOKE

      DISPATCH_VNODE_REVOKE

      Объект файловой системы отменялся.

      Доступный в OS X v10.7 и позже.

  • Флаги события давления памяти

    Объявление

    Objective C

    #define DISPATCH_MEMORYPRESSURE_NORMAL 0x01 #define DISPATCH_MEMORYPRESSURE_WARN 0x02 #define DISPATCH_MEMORYPRESSURE_CRITICAL 0x04

    Константы

    • DISPATCH_MEMORYPRESSURE_NORMAL

      DISPATCH_MEMORYPRESSURE_NORMAL

      Условие давления системной памяти возвратилось к нормальному.

      Доступный в OS X v10.9 и позже.

    • DISPATCH_MEMORYPRESSURE_WARN

      DISPATCH_MEMORYPRESSURE_WARN

      Условие давления системной памяти на этапе предупреждения. Приложения должны выпустить память, в которой они не нуждаются прямо сейчас.

      Доступный в OS X v10.9 и позже.

    • DISPATCH_MEMORYPRESSURE_CRITICAL

      DISPATCH_MEMORYPRESSURE_CRITICAL

      Условие давления системной памяти в критической стадии. Приложения должны выпустить как можно больше памяти.

      Доступный в OS X v10.9 и позже.

  • Константы, представляющие объекты данных.

    Объявление

    Objective C

    #define dispatch_data_empty

    Константы

    • dispatch_data_empty

      dispatch_data_empty

      Объект данных, представляющий область памяти нулевой длины.

      Доступный в OS X v10.7 и позже.

  • Константы, представляющие деструкторы для использования для объектов данных.

    Объявление

    Objective C

    #define DISPATCH_DATA_DESTRUCTOR_DEFAULT NULL #define DISPATCH_DATA_DESTRUCTOR_FREE

    Константы

    • DISPATCH_DATA_DESTRUCTOR_DEFAULT

      DISPATCH_DATA_DESTRUCTOR_DEFAULT

      Деструктор данных по умолчанию для объектов отгрузки.

      Доступный в OS X v10.7 и позже.

    • DISPATCH_DATA_DESTRUCTOR_FREE

      DISPATCH_DATA_DESTRUCTOR_FREE

      Деструктор для объектов данных отгрузки, буфер памяти которых создавался с помощью malloc семья подпрограмм распределения.

      Доступный в OS X v10.7 и позже.

  • Атрибуты для использования при создании новых очередей отгрузки.

    Объявление

    Objective C

    #define DISPATCH_QUEUE_SERIAL #define DISPATCH_QUEUE_CONCURRENT

    Константы

    • DISPATCH_QUEUE_SERIAL

      DISPATCH_QUEUE_SERIAL

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

      Доступный в OS X v10.7 и позже.

    • DISPATCH_QUEUE_CONCURRENT

      DISPATCH_QUEUE_CONCURRENT

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

      Доступный в OS X v10.7 и позже.

    Обсуждение

    Вы используете эти константы с dispatch_queue_create функция для указания типа очереди отгрузки Вы хотите создать. Передайте одну из этих констант для attr параметр той функции.

  • Типы источников отгрузки.

    Объявление

    Objective C

    #define DISPATCH_SOURCE_TYPE_DATA_ADD #define DISPATCH_SOURCE_TYPE_DATA_OR #define DISPATCH_SOURCE_TYPE_MACH_RECV #define DISPATCH_SOURCE_TYPE_MACH_SEND #define DISPATCH_SOURCE_TYPE_PROC #define DISPATCH_SOURCE_TYPE_READ #define DISPATCH_SOURCE_TYPE_SIGNAL #define DISPATCH_SOURCE_TYPE_TIMER #define DISPATCH_SOURCE_TYPE_VNODE #define DISPATCH_SOURCE_TYPE_WRITE #define DISPATCH_SOURCE_TYPE_MEMORYPRESSURE

    Константы

    • DISPATCH_SOURCE_TYPE_DATA_ADD

      DISPATCH_SOURCE_TYPE_DATA_ADD

      Источник отгрузки, объединяющий данные, полученные через вызовы к dispatch_source_merge_data. ADD используется для объединения данных. Дескриптор не использован (нуль передачи на данный момент). Маска не использована (нуль передачи на данный момент).

      Доступный в OS X v10.6 и позже.

    • DISPATCH_SOURCE_TYPE_DATA_OR

      DISPATCH_SOURCE_TYPE_DATA_OR

      Источник отгрузки, объединяющий данные, полученные через вызовы к dispatch_source_merge_data. Логический OR используется для объединения данных. Дескриптор не использован (нуль передачи на данный момент). Маска используется для выполнения логического AND со значением, переданным dispatch_source_merge_data.

      Доступный в OS X v10.6 и позже.

    • DISPATCH_SOURCE_TYPE_MACH_RECV

      DISPATCH_SOURCE_TYPE_MACH_RECV

      Источник отгрузки, контролирующий порт Маха для незаконченных сообщений. Дескриптор является портом Маха с получить правом (mach_port_t). Маска не использована (нуль передачи на данный момент).

      Доступный в OS X v10.6 и позже.

    • DISPATCH_SOURCE_TYPE_MACH_SEND

      DISPATCH_SOURCE_TYPE_MACH_SEND

      Источник отгрузки, контролирующий порт Маха для мертвых уведомлений имени (отправить право больше не имеет соответствия, получает право). Дескриптор является портом Маха с отправлением, или отправьте один раз право (mach_port_t). Маска является маской желаемых событий от “dispatch_source_mach_send_flags_t”.

      Доступный в OS X v10.6 и позже.

    • DISPATCH_SOURCE_TYPE_PROC

      DISPATCH_SOURCE_TYPE_PROC

      Источник отгрузки, контролирующий внешний процесс для событий, определенных “dispatch_source_proc_flags_t”. Дескриптор является идентификатором процесса (pid_t). Маска является маской желаемых событий от “dispatch_source_proc_flags_t”.

      Доступный в OS X v10.6 и позже.

    • DISPATCH_SOURCE_TYPE_READ

      DISPATCH_SOURCE_TYPE_READ

      Источник отгрузки, контролирующий дескриптор файла для незаконченных байтов, доступных, чтобы быть считанным. Дескриптор является дескриптором файла (int). Маска не использована (нуль передачи на данный момент).

      Доступный в OS X v10.6 и позже.

    • DISPATCH_SOURCE_TYPE_SIGNAL

      DISPATCH_SOURCE_TYPE_SIGNAL

      Источник отгрузки, контролирующий текущий процесс для сигналов. Дескриптор является сигнальным числом (int). Маска не использована (нуль передачи на данный момент).

      Доступный в OS X v10.6 и позже.

    • DISPATCH_SOURCE_TYPE_TIMER

      DISPATCH_SOURCE_TYPE_TIMER

      Источник отгрузки, представляющий блок обработчика событий на основе таймера. Дескриптор не использован (нуль передачи на данный момент). Маска не использована (нуль передачи на данный момент).

      Доступный в OS X v10.6 и позже.

    • DISPATCH_SOURCE_TYPE_VNODE

      DISPATCH_SOURCE_TYPE_VNODE

      Источник отгрузки, контролирующий дескриптор файла для событий, определенных “dispatch_source_vnode_flags_t”. Дескриптор является дескриптором файла (int). Маска является маской желаемых событий от “dispatch_source_vnode_flags_t”.

      Доступный в OS X v10.6 и позже.

    • DISPATCH_SOURCE_TYPE_WRITE

      DISPATCH_SOURCE_TYPE_WRITE

      Источник отгрузки, контролирующий дескриптор файла для доступного пространства буфера для записи байтов. Дескриптор является дескриптором файла (интервал). Маска не использована (нуль передачи на данный момент).

      Доступный в OS X v10.6 и позже.

    • DISPATCH_SOURCE_TYPE_MEMORYPRESSURE

      DISPATCH_SOURCE_TYPE_MEMORYPRESSURE

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

      Доступный в OS X v10.9 и позже.

  • Константы норматива времени.

    Объявление

    Swift

    var DISPATCH_TIME_NOW: UInt64 { get } var DISPATCH_TIME_FOREVER: UInt64 { get }

    Objective C

    #define DISPATCH_TIME_NOW 0 #define DISPATCH_TIME_FOREVER (~0ull)

    Константы

    • DISPATCH_TIME_NOW

      DISPATCH_TIME_NOW

      Указывает время, сразу происходящее.

      Доступный в OS X v10.6 и позже.

    • DISPATCH_TIME_FOREVER

      DISPATCH_TIME_FOREVER

      Указывает время, означающее бесконечность.

      Доступный в OS X v10.6 и позже.

  • Множители для вычисления временных стоимостей.

    Объявление

    Objective C

    #define NSEC_PER_SEC 1000000000ull #define USEC_PER_SEC 1000000ull #define NSEC_PER_USEC 1000ull

    Константы

    • NSEC_PER_SEC

      NSEC_PER_SEC

      Число наносекунд за одну секунду.

      Доступный в OS X v10.0 и позже.

    • USEC_PER_SEC

      USEC_PER_SEC

      Число микросекунд за одну секунду.

      Доступный в OS X v10.0 и позже.

    • NSEC_PER_USEC

      NSEC_PER_USEC

      Число наносекунд за одну микросекунду.

      Доступный в OS X v10.0 и позже.

  • Типы отгрузки каналы I/O, которые могут быть созданы.

    Объявление

    Objective C

    #define DISPATCH_IO_STREAM 0 #define DISPATCH_IO_RANDOM 1

    Константы

    • DISPATCH_IO_STREAM

      DISPATCH_IO_STREAM

      Канал представляет линейный поток байтов. Операции чтения и операции записи выполняются последовательно в порядке, они были запущены. Операции всегда читают или пишут данные в позиции указателя файла, которая является текущей, когда начинаются чтение или запись. Операции чтения и операции записи могут быть выполнены одновременно на том же канале.

      Значения смещения проигнорированы для каналов этого типа.

      Доступный в OS X v10.7 и позже.

    • DISPATCH_IO_RANDOM

      DISPATCH_IO_RANDOM

      Канал представляет файл произвольного доступа. Операции чтения и операции записи могут быть выполнены одновременно с каналом этого типа. Смещения интерпретируются относительно позиции указателя файла, которая является текущей в то время, когда создается канал. После создания канала позиция указателя файла дескриптора файла неопределенна, пока канал не оставляет управление дескриптора файла, в котором времени позиция сбрасывается к ее начальному значению.

      Дескриптор файла для канала этого типа должен быть seekable. Если это не будет, то пытание создать канал этого типа для дескриптора приведет к ошибке.

      Доступный в OS X v10.7 и позже.

  • Опции использовать при закрытии отгрузки канал I/O.

    Объявление

    Objective C

    #define DISPATCH_IO_STOP 0x1

    Константы

    • DISPATCH_IO_STOP

      DISPATCH_IO_STOP

      Остановите любые происходящие операции чтения и операции записи.

      Доступный в OS X v10.7 и позже.

  • Опции использовать при конфигурировании канала.

    Объявление

    Objective C

    #define DISPATCH_IO_STRICT_INTERVAL 0x1

    Константы

    • DISPATCH_IO_STRICT_INTERVAL

      DISPATCH_IO_STRICT_INTERVAL

      Ставьте в очередь обработчики для канала в строгих интервалах независимо от того, сколько данных было считано или записано. Даже если объем данных не превышает низкий водяной знак канала, установка этого флага может привести к обработчику, вызываемому.

      Доступный в OS X v10.7 и позже.