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

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

Разработчик

Ссылка платформы CoreServices многопроцессорная ссылка служб

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

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

Многопроцессорная ссылка служб

Multiprocessing Services является API, позволяющий Вам создать приоритетные задачи в своем приложении, которое может работать на одном или более микропроцессорах. В отличие от совместных потоков, создаваемых менеджером по Потоку, Multiprocessing Services автоматически делит процессорное время между доступными задачами, так, чтобы никакая определенная задача не могла монополизировать систему. Если Вы хотите добавить многозадачную возможность к своим приложениям Mac OS, этот документ относится к Вам.

В OS X Углерод поддерживает Multiprocessing Services со следующими ограничениями:

  • Функции отладки не реализованы. Используйте Маха APIs, предоставленный системой для реализации служб отладки.

  • Непрозрачное уведомление IDs локально для Вашего процесса; они не глобально адресуемы через процессы.

  • Выделение глобальной памяти не поддерживается.

Функции

  • Указывает, доступна ли Multiprocessing Services для использования.

    Объявление

    Objective C

    Boolean _MPIsFullyInitialized ( void );

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

    Если это правда, Multiprocessing Services доступна для использования; иначе, ложь.

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

    Объявление

    Objective C

    OSStatus MPGetNextCpuID ( MPCoherenceID owningCoherenceID, MPCpuID *cpuID );

    Параметры

    owningCoherenceID

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

    cpuID

    По возврату, cpuID точки к ID следующего физического процессора.

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

    Код результата. Посмотрите Коды Результата Multiprocessing Services.

    Обсуждение

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

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

    Objective C

    @import CoreServices;

    Доступность

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

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

  • MPProcessors MPProcessors (OS X v10.7)

    Возвращает число процессоров на главном компьютере.

    Объявление

    Objective C

    ItemCount MPProcessors ( void );

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

    Число физических процессоров на главном компьютере.

    Обсуждение

    См. также функцию MPProcessorsScheduled.

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

    Objective C

    @import CoreServices;

    Доступность

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

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

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

    Объявление

    Objective C

    ItemCount MPProcessorsScheduled ( void );

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

    Число активных процессоров, доступных на главном компьютере.

    Обсуждение

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

    См. также функцию MPProcessors.

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

    Objective C

    @import CoreServices;

    Доступность

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

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

  • Создает очередь сообщений.

    Объявление

    Objective C

    OSStatus MPCreateQueue ( MPQueueID *queue );

    Параметры

    queue

    По возврату переменная содержит ID недавно создаваемой очереди сообщений.

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

    Код результата. Посмотрите Коды Результата Multiprocessing Services. Если очередь не могла бы быть создана, MPCreateQueue возвраты kMPInsufficientResourcesErr.

    Обсуждение

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

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

    См. также функции MPDeleteQueue и MPSetQueueReserve.

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

    Objective C

    @import CoreServices;

    Доступность

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

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

  • Удаляет очередь сообщений.

    Объявление

    Objective C

    OSStatus MPDeleteQueue ( MPQueueID queue );

    Параметры

    queue

    ID очереди сообщений Вы хотите удалить.

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

    Код результата. Посмотрите Коды Результата Multiprocessing Services.

    Обсуждение

    После вызова MPDeleteQueue, в отношении указанной очереди ID становится недопустимым, и все внутренние ресурсы, связанные с очередью (включая сообщения с очередями) предъявляют претензии. Любые задачи, ожидающие на очереди, разблокируются и их соответствующее MPWaitOnQueue вызовы возвратятся с кодом результата kMPDeletedErr.

    Также посмотрите функцию MPCreateQueue.

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

    Objective C

    @import CoreServices;

    Доступность

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

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

  • Отправляет сообщение в указанную очередь сообщений.

    Объявление

    Objective C

    OSStatus MPNotifyQueue ( MPQueueID queue, void *param1, void *param2, void *param3 );

    Параметры

    queue

    Очередь ID очереди сообщений Вы хотите уведомить.

    param1

    Первое значение размера указателя сообщения, которое отправит.

    param2

    Второе значение размера указателя сообщения для отправки.

    param3

    Третье значение размера указателя сообщения для отправки.

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

    Код результата. Посмотрите Коды Результата Multiprocessing Services.

    Обсуждение

    Эта функция отправляет сообщение указанной очереди, которые состоят из этих трех параметров, param1, param2, и param3. Система не интерпретирует три значения, включающие текст сообщения. Если задачи ожидают на указанной очереди, первая ожидающая задача разблокируется и задача MPWaitOnQueue функция завершается.

    В зависимости от режима очереди система или выделяет сообщения динамично или присваивает их памяти, зарезервированной для очереди. В любом случае, если больше памяти не доступно для сообщений MPNotifyQueue возвраты kMPInsufficientResourcesErr.

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

    Также посмотрите функцию MPWaitOnQueue.

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

    Objective C

    @import CoreServices;

    Доступность

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

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

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

    Объявление

    Objective C

    OSStatus MPSetQueueReserve ( MPQueueID queue, ItemCount count );

    Параметры

    queue

    ID очереди, сообщения которой Вы хотите зарезервировать.

    count

    Число сообщений для резервирования.

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

    Код результата. Посмотрите Коды Результата Multiprocessing Services.

    Обсуждение

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

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

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

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

    Objective C

    @import CoreServices;

    Доступность

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

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

  • Получает сообщение из указанной очереди сообщений.

    Объявление

    Objective C

    OSStatus MPWaitOnQueue ( MPQueueID queue, void **param1, void **param2, void **param3, Duration timeout );

    Параметры

    queue

    ID очереди сообщений, из которой можно получить уведомление.

    param1

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

    param2

    По возврату, второму значению размера указателя уведомления. Передача NULL если Вам не нужна эта часть сообщения.

    param3

    По возврату, третьему значению размера указателя уведомления. Передача NULL если Вам не нужна эта часть сообщения.

    timeout

    Время для ожидания уведомления перед таймаутом. Посмотрите Константы Продолжительности Таймера для списка констант, которые можно использовать для указания интервала ожидания.

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

    Код результата. Посмотрите Коды Результата Multiprocessing Services.

    Обсуждение

    Эта функция получает сообщение от указанной очереди сообщений. Если никакие сообщения не в настоящее время доступны, тайм-аут указывает, сколько времени функция должна ожидать одной. Задачи, ожидающие на очереди, обрабатываются способом метода «первым пришел - первым вышел»; т.е. первая задача ожидать на очереди получает сообщение из MPNotifyQueue вызвать.

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

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

    Также посмотрите функцию MPNotifyQueue.

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

    Objective C

    @import CoreServices;

    Доступность

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

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

  • Создает семафор.

    Объявление

    Objective C

    OSStatus MPCreateSemaphore ( MPSemaphoreCount maximumValue, MPSemaphoreCount initialValue, MPSemaphoreID *semaphore );

    Параметры

    maximumValue

    Максимальное позволенное значение семафора.

    initialValue

    Начальное значение семафора.

    semaphore

    По возврату, semaphore содержит ID недавно создаваемого семафора.

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

    Код результата. Посмотрите Коды Результата Multiprocessing Services.

    Обсуждение

    Если Вы хотите создать двоичный семафор, можно вызвать макрос MPCreateBinarySemaphore (MPSemaphoreID *semaphore) вместо этого, который просто вызывает MPCreateSemaphore с обоими maximumValue и initialValue набор к 1.

    Также посмотрите функцию MPDeleteSemaphore.

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

    Objective C

    @import CoreServices;

    Доступность

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

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

  • Удаляет семафор.

    Объявление

    Objective C

    OSStatus MPDeleteSemaphore ( MPSemaphoreID semaphore );

    Параметры

    semaphore

    ID семафора Вы хотите удалить.

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

    Код результата. Посмотрите Коды Результата Multiprocessing Services.

    Обсуждение

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

    Также посмотрите функцию MPCreateSemaphore.

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

    Objective C

    @import CoreServices;

    Доступность

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

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

  • Сигнализирует семафор.

    Объявление

    Objective C

    OSStatus MPSignalSemaphore ( MPSemaphoreID semaphore );

    Параметры

    semaphore

    ID семафора Вы хотите сигнализировать.

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

    Код результата. Посмотрите Коды Результата Multiprocessing Services. Если значение семафора уже было в максимуме, MPSignalSemaphore возвраты kInsufficientResourcesErr.

    Обсуждение

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

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

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

    Objective C

    @import CoreServices;

    Доступность

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

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

  • Ожидает на семафоре

    Объявление

    Objective C

    OSStatus MPWaitOnSemaphore ( MPSemaphoreID semaphore, Duration timeout );

    Параметры

    semaphore

    ID семафора Вы хотите ожидать на.

    timeout

    Максимальное время функция должно ожидать перед таймаутом. Посмотрите Константы Продолжительности Таймера для списка констант, которые можно использовать для указания интервала ожидания.

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

    Код результата. Посмотрите Коды Результата Multiprocessing Services.

    Обсуждение

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

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

    Также посмотрите функцию MPSignalSemaphore.

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

    Objective C

    @import CoreServices;

    Доступность

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

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

  • MPCreateTask MPCreateTask (OS X v10.7)

    Создает приоритетную задачу.

    Объявление

    Objective C

    OSStatus MPCreateTask ( TaskProc entryPoint, void *parameter, ByteCount stackSize, MPQueueID notifyQueue, void *terminationParameter1, void *terminationParameter2, MPTaskOptions options, MPTaskID *task );

    Параметры

    entryPoint

    Указатель на функцию задачи. Функция задачи должна взять единственный параметр размера указателя и возвратить значение типа OSStatus.

    parameter

    Параметр для передачи функции задачи.

    stackSize

    Размер штабеля присвоился к задаче. Обратите внимание на то, что необходимо бояться превышать границы штабеля, так как не могут быть обнаружены переполнения стека. Указание нуля для размера приведет к размеру штабеля по умолчанию 4 КБ.

    Обратите внимание на то, что в OS X до версии 10.1, этот параметр проигнорирован, и все штабели имеют размер по умолчанию 512 КБ. Версии 10.1 и позже не имеют этого ограничения.

    notifyQueue

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

    terminationParameter1

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

    terminationParameter2

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

    options

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

    task

    По возврату, task точки к ID недавно создаваемой задачи.

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

    Код результата. Посмотрите Коды Результата Multiprocessing Services. Если MPCreateTask не мог создать задачу, потому что некоторый критический ресурс не был доступен, функциональные возвраты kMPInsufficientResourcesErr. Обычно это вследствие отсутствия памяти для выделения внутренних структур данных, связанных с задачей или штабелем. Функция также возвращается kMPInsufficientResourcesErr если установлены какие-либо зарезервированные биты опции.

    Обсуждение

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

    • Путем возврата из его точки входа

    • Путем вызова MPExit

    • Когда указано как цель MPTerminateTask вызвать

    • Если обнаруженное аппаратными средствами исключение исключения или программирования происходит, и никакой обработчик исключений не установлен

    • Если приложение вызывает ExitToShell

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

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

    См. также функцию MPTerminateTask.

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

    Objective C

    @import CoreServices;

    Доступность

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

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

  • Получает задачу ID выполняющейся в настоящее время приоритетной задачи

    Объявление

    Objective C

    MPTaskID MPCurrentTaskID ( void );

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

    Задача ID текущей приоритетной задачи. См. описание MPTaskID тип данных.

    Обсуждение

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

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

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

    Objective C

    @import CoreServices;

    Доступность

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

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

  • Устанавливает тип задачи.

    Объявление

    Objective C

    OSStatus MPSetTaskType ( MPTaskID task, OSType taskType );

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

    noErr код результата. Посмотрите Коды Результата Multiprocessing Services.

    Обсуждение

    Эта функция ничего не делает и не должна использоваться.

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

    Objective C

    @import CoreServices;

    Доступность

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

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

  • MPExit MPExit (OS X v10.7)

    Позволяет задаче завершить себя

    Объявление

    Objective C

    void MPExit ( OSStatus status );

    Параметры

    status

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

    Обсуждение

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

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

    Objective C

    @import CoreServices;

    Доступность

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

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

  • Получает следующую задачу ID в списке доступных задач.

    Объявление

    Objective C

    OSStatus MPGetNextTaskID ( MPProcessID owningProcessID, MPTaskID *taskID );

    Параметры

    owningProcessID

    ID процесса (обычно приложение), которому принадлежат задачи. Этот ID совпадает с процессом ID, обработанный менеджером по Фрагменту Кода.

    taskID

    По возврату, taskID точки к ID следующей задачи в списке задач.

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

    Код результата. Посмотрите Коды Результата Multiprocessing Services.

    Обсуждение

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

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

    Objective C

    @import CoreServices;

    Доступность

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

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

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

    Объявление

    Objective C

    OSStatus MPSetTaskWeight ( MPTaskID task, MPTaskWeight weight );

    Параметры

    task

    ID задачи, которой Вы хотите присвоить взвешивание.

    weight

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

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

    Код результата. Посмотрите Коды Результата Multiprocessing Services.

    Обсуждение

    Приблизительная доля процессора определяется как:

    • weight of the task / total weight of available tasks

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

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

    Objective C

    @import CoreServices;

    Доступность

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

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

  • Определяет, планируется ли преимущественно задача.

    Объявление

    Objective C

    Boolean MPTaskIsPreemptive ( MPTaskID taskID );

    Параметры

    taskID

    Задача Вы хотите проверить. Передача kMPNoID или kInvalidID если Вы хотите указать текущую задачу.

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

    Если это правда, задача преимущественно планируется. Если ложь, согласованно планируется задача.

    Обсуждение

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

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

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

    Objective C

    @import CoreServices;

    Доступность

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

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

  • Завершает существующую задачу.

    Объявление

    Objective C

    OSStatus MPTerminateTask ( MPTaskID task, OSStatus terminationStatus );

    Параметры

    task

    ID задачи Вы хотите завершиться.

    terminationStatus

    Значение типа OSStatus указание состояния завершения. Это значение отправляется очереди сообщения о состоянии завершения, в которой Вы указали MPCreateTask вместо кода результата функции задачи.

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

    Код результата. Посмотрите Коды Результата Multiprocessing Services. Если задача уже в процессе завершения, которая будет завершена находится MPTerminateTask возвраты kMPInsufficientResourcesErr. Вы не должны принимать дополнительные меры, если это происходит.

    Обсуждение

    Необходимо быть очень осторожными при вызове MPTerminateTask. Как определено, этот вызов асинхронно и резко завершит задачу, потенциально оставляя любые структуры или ресурсы, на которые он работал в неопределенном состоянии. OS X усиливает эту проблему, поскольку задачи MP могут использовать еще много системных служб, не ожидающих, что клиентские потоки асинхронно завершатся, и эти службы не предпринимают довольно сложные шаги, необходимые, чтобы защитить от или восстановиться с, такая ситуация.

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

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

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

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

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

    Objective C

    @import CoreServices;

    Доступность

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

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

  • MPYield MPYield (OS X v10.7)

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

    Объявление

    Objective C

    void MPYield ( void );

    Обсуждение

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

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

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

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

    Objective C

    @import CoreServices;

    Доступность

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

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

  • Создает критический объект области.

    Объявление

    Objective C

    OSStatus MPCreateCriticalRegion ( MPCriticalRegionID *criticalRegion );

    Параметры

    criticalRegion

    По возврату, criticalRegion содержит ID недавно создаваемого критического объекта области.

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

    Код результата. Посмотрите Коды Результата Multiprocessing Services.

    Обсуждение

    Также посмотрите функцию MPDeleteCriticalRegion.

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

    Objective C

    @import CoreServices;

    Доступность

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

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

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

    Объявление

    Objective C

    OSStatus MPDeleteCriticalRegion ( MPCriticalRegionID criticalRegion );

    Параметры

    criticalRegion

    Критическая область возражает, что Вы хотите удалить.

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

    Код результата. Посмотрите Коды Результата Multiprocessing Services.

    Обсуждение

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

    Также посмотрите функцию MPCreateCriticalRegion.

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

    Objective C

    @import CoreServices;

    Доступность

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

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

  • Попытки ввести критическую область.

    Объявление

    Objective C

    OSStatus MPEnterCriticalRegion ( MPCriticalRegionID criticalRegion, Duration timeout );

    Параметры

    criticalRegion

    ID критической области Вы хотите войти.

    timeout

    Максимальное время для ожидания записи перед таймаутом. Посмотрите Константы Продолжительности Таймера для списка констант, которые можно использовать для указания интервала ожидания.

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

    Код результата. Посмотрите Коды Результата Multiprocessing Services.

    Обсуждение

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

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

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

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

    Objective C

    @import CoreServices;

    Доступность

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

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

  • Выходит из критической области.

    Объявление

    Objective C

    OSStatus MPExitCriticalRegion ( MPCriticalRegionID criticalRegion );

    Параметры

    criticalRegion

    ID критической области Вы хотите выйти.

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

    Код результата. Посмотрите Коды Результата Multiprocessing Services. Если задаче не принадлежит критическая область, указанная criticalRegion, MPExitCriticalRegion возвраты kMPInsufficientResourcesErr.

    Обсуждение

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

    Также посмотрите функцию MPEnterCriticalRegion.

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

    Objective C

    @import CoreServices;

    Доступность

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

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

  • Создает группу события.

    Объявление

    Objective C

    OSStatus MPCreateEvent ( MPEventID *event );

    Параметры

    event

    По возврату, event содержит ID недавно создаваемой группы события.

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

    Код результата. Посмотрите Коды Результата Multiprocessing Services.

    Обсуждение

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

    Также посмотрите функцию MPDeleteEvent.

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

    Objective C

    @import CoreServices;

    Доступность

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

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

  • Удаляет группу события.

    Объявление

    Objective C

    OSStatus MPDeleteEvent ( MPEventID event );

    Параметры

    event

    ID группы события Вы хотите удалить.

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

    Код результата. Посмотрите Коды Результата Multiprocessing Services.

    Обсуждение

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

    Также посмотрите функцию MPCreateEvent.

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

    Objective C

    @import CoreServices;

    Доступность

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

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

  • MPSetEvent MPSetEvent (OS X v10.7)

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

    Объявление

    Objective C

    OSStatus MPSetEvent ( MPEventID event, MPEventFlags flags );

    Параметры

    event

    ID группы события Вы хотите установить.

    flags

    Флаги Вы хотите объединиться в группу события.

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

    Код результата. Посмотрите Коды Результата Multiprocessing Services.

    Обсуждение

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

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

    Также посмотрите функцию MPWaitForEvent.

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

    Objective C

    @import CoreServices;

    Доступность

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

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

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

    Объявление

    Objective C

    OSStatus MPWaitForEvent ( MPEventID event, MPEventFlags *flags, Duration timeout );

    Параметры

    event

    Группа события, флаги которой Вы хотите получить.

    flags

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

    timeout

    Максимальное время для ожидания событий перед таймаутом. Посмотрите Константы Продолжительности Таймера для списка констант, которые можно использовать для указания интервала ожидания.

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

    Код результата. Посмотрите Коды Результата Multiprocessing Services.

    Обсуждение

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

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

    Также посмотрите функцию MPSetEvent.

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

    Objective C

    @import CoreServices;

    Доступность

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

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

  • Сигнализирует уведомление ядра.

    Объявление

    Objective C

    OSStatus MPCauseNotification ( MPNotificationID notificationID );

    Параметры

    notificationID

    ID уведомления ядра Вы хотите сигнализировать.

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

    Код результата. Посмотрите Коды Результата Multiprocessing Services.

    Обсуждение

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

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

    Objective C

    @import CoreServices;

    Доступность

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

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

  • Создает уведомление ядра

    Объявление

    Objective C

    OSStatus MPCreateNotification ( MPNotificationID *notificationID );

    Параметры

    notificationID

    По возврату, notificationID точки к недавно создаваемому уведомлению ядра.

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

    Код результата. Посмотрите Коды Результата Multiprocessing Services.

    Обсуждение

    После создания объекта уведомления ядра можно добавить простые уведомления путем вызывания функции MPModifyNotification.

    Также посмотрите функцию MPDeleteNotification.

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

    Objective C

    @import CoreServices;

    Доступность

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

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

  • Удаляет уведомление ядра.

    Объявление

    Objective C

    OSStatus MPDeleteNotification ( MPNotificationID notificationID );

    Параметры

    notificationID

    ID уведомления Вы хотите удалить.

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

    Код результата. Посмотрите Коды Результата Multiprocessing Services.

    Обсуждение

    Также посмотрите функцию MPCreateNotification.

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

    Objective C

    @import CoreServices;

    Доступность

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

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

  • Добавляет простое уведомление уведомлению ядра.

    Объявление

    Objective C

    OSStatus MPModifyNotification ( MPNotificationID notificationID, MPOpaqueID anID, void *notifyParam1, void *notifyParam2, void *notifyParam3 );

    Параметры

    notificationID

    ID уведомления ядра Вы хотите добавить к..

    anID

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

    notifyParam1

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

    notifyParam2

    Если anID указывает очередь сообщений, этот параметр должен содержать второе значение размера указателя сообщения, которое будет отправлено в очередь сообщений когда MPCauseNotification вызывается. Передача NULL если Вам не нужен этот параметр.

    notifyParam3

    Если anID указывает очередь сообщений, этот параметр должен содержать третье значение размера указателя сообщения, отправленного в очередь сообщений когда MPCauseNotification вызывается. Передача NULL если Вам не нужен этот параметр.

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

    Код результата. Посмотрите Коды Результата Multiprocessing Services.

    Обсуждение

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

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

    Objective C

    @import CoreServices;

    Доступность

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

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

  • Объявление

    Objective C

    OSStatus MPModifyNotificationParameters ( MPNotificationID notificationID, MPOpaqueIDClass kind, void *notifyParam1, void *notifyParam2, void *notifyParam3 );

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

    Код результата. Посмотрите Коды Результата Multiprocessing Services.

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

    Objective C

    @import CoreServices;

    Доступность

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

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

  • Возвращает индекс для доступа к хранению на задачу.

    Объявление

    Objective C

    OSStatus MPAllocateTaskStorageIndex ( TaskStorageIndex *taskIndex );

    Параметры

    index

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

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

    Код результата. Посмотрите Коды Результата Multiprocessing Services.

    Обсуждение

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

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

    Также посмотрите функцию MPDeallocateTaskStorageIndex.

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

    Objective C

    @import CoreServices;

    Доступность

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

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

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

    Объявление

    Objective C

    OSStatus MPDeallocateTaskStorageIndex ( TaskStorageIndex taskIndex );

    Параметры

    index

    Индекс Вы хотите освободить.

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

    Код результата. Посмотрите Коды Результата Multiprocessing Services.

    Обсуждение

    Также посмотрите функцию MPAllocateTaskStorageIndex.

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

    Objective C

    @import CoreServices;

    Доступность

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

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

  • Сохранили значение хранения в указанном индексе.

    Объявление

    Objective C

    TaskStorageValue MPGetTaskStorageValue ( TaskStorageIndex taskIndex );

    Параметры

    index

    Индекс значения хранения Вы хотите получить.

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

    Значение сохранено в указанном индексе. См. описание TaskStorageValue тип данных.

    Обсуждение

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

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

    Также посмотрите функцию MPSetTaskStorageValue.

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

    Objective C

    @import CoreServices;

    Доступность

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

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

  • Устанавливает значение хранения для данного индекса.

    Объявление

    Objective C

    OSStatus MPSetTaskStorageValue ( TaskStorageIndex taskIndex, TaskStorageValue value );

    Параметры

    index

    Индекс, значение хранения которого Вы хотите установить.

    value

    Значение Вы хотите установить.

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

    Код результата. Посмотрите Коды Результата Multiprocessing Services.

    Обсуждение

    Обычно Вы используете MPSetTaskStorageValue сохранить указатели на специфичные для задачи структуры или данные.

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

    Также посмотрите функцию MPGetTaskStorageValue.

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

    Objective C

    @import CoreServices;

    Доступность

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

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

  • MPAllocate MPAllocate (OS X v10.7)

    Выделяет неперемещаемый блок памяти.

    Оператор осуждения

    Использовать MPAllocateAligned вместо этого.

    Объявление

    Objective C

    LogicalAddress MPAllocate ( ByteCount size );

    Параметры

    size

    Размер, в байтах, блока памяти для выделения.

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

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

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

    Objective C

    @import CoreServices;

    Доступность

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

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

  • Выделяет неперемещаемый блок памяти.

    Объявление

    Objective C

    LogicalAddress MPAllocateAligned ( ByteCount size, UInt8 alignment, OptionBits options );

    Параметры

    size

    Размер, в байтах, блока памяти для выделения.

    alignment

    Желаемое выравнивание выделенного блока памяти. Посмотрите Константы Выравнивания Выделения памяти для списка возможных значений для передачи. Обратите внимание на то, что будет минимальное выравнивание независимо от требуемого выравнивания. Если требуемый блок памяти составит 4 байта или меньший, то блок составит выровненные по крайней мере 4 байта. Если требуемый блок будет больше, чем 4 байта, то блок составит выровненных по крайней мере 8 байтов.

    options

    Любая дополнительная информация для использования с этим вызовом. Посмотрите Константы Опции Выделения памяти для списка возможных значений для передачи.

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

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

    Обсуждение

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

    Можно тиражировать эффект более старого MPAllocate функция путем вызова MPAllocateAligned с 32-байтовым выравниванием и никакими опциями.

    Также посмотрите функцию MPFree.

    Специальные замечания

    OS X не поддерживает выделение глобальной переменной (перекрестное адресное пространство) или резидентная память с этой функцией. Кроме того, передача kMPAllocateNoGrowthMask постоянный в options параметр не имеет никакого эффекта в OS X, так как выделение памяти сделано с редкой «кучей».

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

    Objective C

    @import CoreServices;

    Доступность

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

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

  • MPBlockClear MPBlockClear (OS X v10.7)

    Очищает блок памяти.

    Объявление

    Objective C

    void MPBlockClear ( LogicalAddress address, ByteCount size );

    Параметры

    address

    Начальный адрес блока памяти Вы хотите очиститься.

    size

    Число байтов Вы хотите очиститься.

    Обсуждение

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

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

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

    Objective C

    @import CoreServices;

    Доступность

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

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

  • MPBlockCopy MPBlockCopy (OS X v10.7)

    Копирует блок памяти.

    Объявление

    Objective C

    void MPBlockCopy ( LogicalAddress source, LogicalAddress destination, ByteCount size );

    Параметры

    source

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

    destination

    Расположение, в которое Вы хотите скопировать блок памяти.

    size

    Число байтов для копирования.

    Обсуждение

    Эта функция просто вызывает через к Библиотечной функции Driver Services BlockMoveData. В то время как эта функция выполняется, Обратите внимание на то, что Вы не должны делать предположения о состоянии целевой памяти. В промежуточном состоянии значения могут присутствовать, которые не являются ни оригиналом, ни заключительными. Например, эта функция может использовать 'dcbz' инструкция. Если базовая память не является кэшируемой, если память является записью - через вместо копии назад, или если блок данных кэша сбрасывается по некоторым причинам, 'dcbz' инструкция запишет нули месту назначения. Можно избежать использования 'dcbz' инструкция путем вызова BlockMoveDataUncached, но даже что функция не делает никакие другие гарантии о промежуточном состоянии блока памяти.

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

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

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

    Objective C

    @import CoreServices;

    Доступность

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

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

  • MPDataToCode MPDataToCode (OS X v10.7)

    Определяет указанный блок памяти как исполняемый код.

    Объявление

    Objective C

    void MPDataToCode ( LogicalAddress address, ByteCount size );

    Параметры

    address

    Начальный адрес блока памяти Вы хотите определять как код.

    size

    Размер блока памяти.

    Обсуждение

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

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

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

    Objective C

    @import CoreServices;

    Доступность

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

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

    Не доступный 64-разрядным приложениям.

  • MPFree MPFree (OS X v10.7)

    Освобождает память, выделенную MPAllocateAligned.

    Объявление

    Objective C

    void MPFree ( LogicalAddress object );

    Параметры

    object

    Указатель на память Вы хотите выпустить.

    Обсуждение

    Также посмотрите функцию MPAllocateAligned.

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

    Objective C

    @import CoreServices;

    Доступность

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

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

  • Возвращает размер блока памяти.

    Объявление

    Objective C

    ByteCount MPGetAllocatedBlockSize ( LogicalAddress object );

    Параметры

    object

    Адрес блока памяти, размер которого Вы хотите определить.

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

    Размер выделенного блока памяти, в байтах.

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

    Objective C

    @import CoreServices;

    Доступность

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

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

  • MPRemoteCall MPRemoteCall (OS X v10.7)

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

    Объявление

    Objective C

    void * MPRemoteCall ( MPRemoteProcedure remoteProc, void *parameter, MPRemoteContext context );

    Параметры

    remoteProc

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

    parameter

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

    context

    Этот параметр проигнорирован; указать kMPOwningProcessRemoteContext.

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

    Значение, которое возвратил Ваш удаленный обратный вызов процедуры.

    Обсуждение

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

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

    Objective C

    @import CoreServices;

    Доступность

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

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

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

    Объявление

    Objective C

    void * MPRemoteCallCFM ( MPRemoteProcedure remoteProc, void *parameter, MPRemoteContext context );

    Параметры

    remoteProc

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

    parameter

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

    context

    Этот параметр проигнорирован; указать kMPOwningProcessRemoteContext.

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

    Значение, которое возвратил Ваш удаленный обратный вызов процедуры.

    Обсуждение

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

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

    Objective C

    @import CoreServices;

    Доступность

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

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

  • MPArmTimer MPArmTimer (OS X v10.7)

    Вооружает таймер для истечения в установленный срок.

    Объявление

    Objective C

    OSStatus MPArmTimer ( MPTimerID timerID, AbsoluteTime *expirationTime, OptionBits options );

    Параметры

    timerID

    ID таймера Вы хотите вооружиться.

    expirationTime

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

    options

    Любые дополнительные действия. Посмотрите Маски Опции Таймера для списка возможных значений.

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

    Код результата. Посмотрите Коды Результата Multiprocessing Services. Если таймер уже истек, сброс не имеет место и функциональные возвраты kMPInsufficientResourcesErr.

    Обсуждение

    Время истечения срока является абсолютным временем, которое можно генерировать путем вызова Библиотечной функции Driver Services UpTime. Когда таймер истекает, уведомление отправляется в механизм уведомления, указанный в последнем MPSetTimerNotify вызвать. Если указанное уведомление, ID стал недопустимым, никакое действие, взято, когда истекает таймер. Сам таймер удален, когда он истекает, если Вы не указали kMPPreserveTimerID опция в параметре опций.

    Также посмотрите функцию MPCancelTimer.

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

    Objective C

    @import CoreServices;

    Доступность

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

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

  • Отменяет вооруженный таймер.

    Объявление

    Objective C

    OSStatus MPCancelTimer ( MPTimerID timerID, AbsoluteTime *timeRemaining );

    Параметры

    timerID

    ID вооруженного таймера Вы хотите отменить.

    timeRemaining

    По возврату, timeRemaining содержит время, оставаясь, прежде чем таймер истек бы.

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

    Код результата. Посмотрите Коды Результата Multiprocessing Services. Если таймер уже истек, эта функция возвраты kMPInsufficientResourcesErr.

    Обсуждение

    Также посмотрите функцию MPArmTimer.

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

    Objective C

    @import CoreServices;

    Доступность

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

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

  • Создает таймер.

    Объявление

    Objective C

    OSStatus MPCreateTimer ( MPTimerID *timerID );

    Параметры

    timerID

    По возврату, timerID содержит ID недавно создаваемого таймера.

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

    Код результата. Посмотрите Коды Результата Multiprocessing Services.

    Обсуждение

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

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

    Для указания механизма уведомления для сигнализации используйте функцию MPSetTimerNotify.

    Также посмотрите функции MPDeleteTimer и MPArmTimer.

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

    Objective C

    @import CoreServices;

    Доступность

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

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

  • MPDelayUntil MPDelayUntil (OS X v10.7)

    Блокирует задачу вызова до требуемого времени.

    Объявление

    Objective C

    OSStatus MPDelayUntil ( AbsoluteTime *expirationTime );

    Параметры

    expirationTime

    Время для разблокирования задачи.

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

    Код результата. Посмотрите Коды Результата Multiprocessing Services.

    Обсуждение

    Вы не можете вызвать эту функцию от совместной задачи.

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

    Objective C

    @import CoreServices;

    Доступность

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

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

  • Демонтирует таймер.

    Объявление

    Objective C

    OSStatus MPDeleteTimer ( MPTimerID timerID );

    Параметры

    timerID

    ID таймера Вы хотите удалить.

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

    Код результата. Посмотрите Коды Результата Multiprocessing Services.

    Обсуждение

    После удаления таймер ID становится недопустимым, и в отношении всех внутренних ресурсов, связанных с таймером, предъявляют претензии.

    Также посмотрите функцию MPCreateTimer.

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

    Objective C

    @import CoreServices;

    Доступность

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

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

  • Устанавливает информацию об уведомлении, связанную с таймером.

    Объявление

    Objective C

    OSStatus MPSetTimerNotify ( MPTimerID timerID, MPOpaqueID anID, void *notifyParam1, void *notifyParam2, void *notifyParam3 );

    Параметры

    timerID

    ID таймера, информацию об уведомлении которого Вы хотите установить.

    notificationID

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

    notifyParam1

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

    notifyParam2

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

    notifyParam3

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

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

    Код результата. Посмотрите Коды Результата Multiprocessing Services.

    Обсуждение

    То, когда таймер истекает, Multiprocessing Services проверяет уведомление ID, и если это допустимо, уведомляет связанные механизмы уведомления (т.е. группы события, очереди или семафоры), что Вы указали в Вашем MPSetTimerNotify вызовы.

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

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

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

    Objective C

    @import CoreServices;

    Доступность

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

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

  • Удаляет исключение задачи.

    Объявление

    Objective C

    OSStatus MPDisposeTaskException ( MPTaskID task, OptionBits action );

    Параметры

    task

    Задача, исключение которой Вы хотите удалить.

    action

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

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

    Код результата. Посмотрите Коды Результата Multiprocessing Services. Если указанная задача не приостановлена, эта функция возвраты, если указанное действие недопустимо или не поддерживается, или kMPInsufficientResourcesErr.

    Обсуждение

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

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

    Objective C

    @import CoreServices;

    Доступность

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

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

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

    Объявление

    Objective C

    OSStatus MPExtractTaskState ( MPTaskID task, MPTaskStateKind kind, void *info );

    Параметры

    task

    Задача, чью информацию состояния Вы хотите получить.

    kind

    Вид информации состояния Вы хотите получить. Посмотрите Константы Состояния задачи для перечисления возможных значений.

    info

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

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

    Код результата. Посмотрите Коды Результата Multiprocessing Services. При попытке извлечь информацию состояния для выполняющейся задачи, эта функция возвраты kMPInsufficientResourcesErr.

    Обсуждение

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

    Также посмотрите функцию MPSetTaskState.

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

    Objective C

    @import CoreServices;

    Доступность

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

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

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

    Объявление

    Objective C

    OSStatus MPSetExceptionHandler ( MPTaskID task, MPQueueID exceptionQ );

    Параметры

    task

    Задача связаться с обработчиком исключений.

    exceptionQ

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

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

    Код результата. Посмотрите Коды Результата Multiprocessing Services.

    Обсуждение

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

    • Первое значение размера указателя содержит ID задачи, в которой произошло исключение.

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

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

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

    Objective C

    @import CoreServices;

    Доступность

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

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

  • Наборы утверждают информацию для приостановленной задачи.

    Объявление

    Objective C

    OSStatus MPSetTaskState ( MPTaskID task, MPTaskStateKind kind, void *info );

    Параметры

    task

    Задача, чью информацию состояния Вы хотите установить.

    kind

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

    info

    Указатель на структуру данных, содержащую информацию состояния, Вы хотите установить. Формат структуры данных варьируется в зависимости от информации состояния, которую Вы хотите установить. Посмотрите заголовочный файл MachineExceptions.h для форматов различных информационных структур состояния.

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

    Код результата. Посмотрите Коды Результата Multiprocessing Services. Если Вы указываете kMPTaskState32BitMemoryException для получения информации состояния, эта функция возвраты kMPInsufficientResourcesErr, так как информация о состоянии исключения только для чтения. Попытка установить информацию состояния для выполняющейся задачи также возвратится kMPInsufficientResourcesErr.

    Обсуждение

    Можно использовать эту функцию для установки содержания регистра или информации об исключении для определенной задачи. Однако некоторая информация состояния, такая как информация об исключении (как указано kMPTaskState32BitMemoryException) а также MSR, ExceptKind, DSISR, и DAR регистры машины (указанный под kMPTaskStateMachine) только для чтения. В то время как попытка установить информацию об исключении возвратит ошибку, попытка установить регистры машины только для чтения ничего не сделает.

    Также посмотрите функцию MPExtractTaskState.

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

    Objective C

    @import CoreServices;

    Доступность

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

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

  • Выдает исключение к указанной задаче.

    Объявление

    Objective C

    OSStatus MPThrowException ( MPTaskID task, MPExceptionKind kind );

    Параметры

    task

    Задача, к которой должно быть выдано исключение.

    kind

    Тип исключения для предоставления задаче.

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

    Код результата. Посмотрите Коды Результата Multiprocessing Services. Если задача не определяется для взятия вызванных исключительных ситуаций, функциональных возвратов, если задача уже приостановлена или kMPInsufficientResourcesErr.

    Обсуждение

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

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

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

    В OS X эта функция доступна, но не реализована.

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

    Objective C

    @import CoreServices;

    Доступность

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

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

  • Регистрирует отладчик.

    Объявление

    Objective C

    OSStatus MPRegisterDebugger ( MPQueueID queue, MPDebuggerLevel level );

    Параметры

    queue

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

    level

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

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

    Код результата. Посмотрите Коды Результата Multiprocessing Services.

    Обсуждение

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

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

    Objective C

    @import CoreServices;

    Доступность

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

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

  • Не регистрирует отладчик.

    Объявление

    Objective C

    OSStatus MPUnregisterDebugger ( MPQueueID queue );

    Параметры

    queue

    ID очереди, отладчик которой Вы хотите не зарегистрировать.

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

    Код результата. Посмотрите Коды Результата Multiprocessing Services.

    Обсуждение

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

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

    Objective C

    @import CoreServices;

    Доступность

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

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

Обратные вызовы

  • Определяет вызов удаленной процедуры.

    Объявление

    Swift

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

    Objective C

    typedef void* (*MPRemoteProcedure) ( void *parameter );

    Параметры

    parameter

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

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

    Objective C

    @import CoreServices;

    Swift

    import CoreServices

    Доступность

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

  • Определяет точку входа задачи.

    Объявление

    Swift

    typealias TaskProc = CFunctionPointer<((UnsafeMutablePointer<Void>) -> OSStatus)>

    Objective C

    typedef OSStatus (*TaskProc) ( void *parameter );

    Параметры

    parameter

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

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

    Objective C

    @import CoreServices;

    Swift

    import CoreServices

    Доступность

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

Типы данных

  • Объявление

    Swift

    typealias MPAddressSpaceID = COpaquePointer

    Objective C

    typedef struct OpaqueMPAddressSpaceID * MPAddressSpaceID;

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

    Objective C

    @import CoreServices;

    Swift

    import CoreServices

    Доступность

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

  • Объявление

    Swift

    struct MPAddressSpaceInfo { var version: PBVersion var processID: MPProcessID var groupID: MPCoherenceID var nTasks: ItemCount var vsid: (UInt32, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32) }

    Objective C

    struct MPAddressSpaceInfo { PBVersion version; MPProcessID processID; MPCoherenceID groupID; ItemCount nTasks; UInt32 vsid[16]; }; typedef struct MPAddressSpaceInfo MPAddressSpaceInfo;

    Доступность

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

  • Объявление

    Swift

    typealias MPAreaID = COpaquePointer

    Objective C

    typedef struct OpaqueMPAreaID * MPAreaID;

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

    Objective C

    @import CoreServices;

    Swift

    import CoreServices

    Доступность

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

  • Представляет группу когерентности памяти.

    Объявление

    Swift

    typealias MPCoherenceID = COpaquePointer

    Objective C

    typedef struct OpaqueMPCoherenceID * MPCoherenceID;

    Обсуждение

    Группа когерентности является набором процессоров и других контроллеров шины, имеющих когерентный кэшем доступ к памяти. Mac OS 9 определяет только одну группу когерентности, которая является всеми процессорами, которые могут получить доступ к внутренней памяти (RAM). Другие группы когерентности возможны; например, плата PCI с ее собственной памятью и процессоры могут включить группу когерентности.

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

    Objective C

    @import CoreServices;

    Swift

    import CoreServices

    Доступность

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

  • Объявление

    Swift

    typealias MPConsoleID = COpaquePointer

    Objective C

    typedef struct OpaqueMPConsoleID * MPConsoleID;

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

    Objective C

    @import CoreServices;

    Swift

    import CoreServices

    Доступность

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

  • Представляет CPU ID.

    Объявление

    Swift

    typealias MPCpuID = COpaquePointer

    Objective C

    typedef struct OpaqueMPCpuID * MPCpuID;

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

    Objective C

    @import CoreServices;

    Swift

    import CoreServices

    Доступность

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

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

    Объявление

    Swift

    typealias MPCriticalRegionID = COpaquePointer

    Objective C

    typedef struct OpaqueMPCriticalRegionID * MPCriticalRegionID;

    Обсуждение

    Вы получаете критическую область ID путем вызывания функции MPCreateCriticalRegion.

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

    Objective C

    @import CoreServices;

    Swift

    import CoreServices

    Доступность

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

  • Объявление

    Swift

    struct MPCriticalRegionInfo { var version: PBVersion var processID: MPProcessID var regionName: OSType var nWaiting: ItemCount var waitingTaskID: MPTaskID var owningTask: MPTaskID var count: ItemCount }

    Objective C

    struct MPCriticalRegionInfo { PBVersion version; MPProcessID processID; OSType regionName; ItemCount nWaiting; MPTaskID waitingTaskID; MPTaskID owningTask; ItemCount count; }; typedef struct MPCriticalRegionInfo MPCriticalRegionInfo;

    Доступность

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

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

    Объявление

    Swift

    typealias MPEventFlags = UInt32

    Objective C

    typedef UInt32 MPEventFlags;

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

    Objective C

    @import CoreServices;

    Swift

    import CoreServices

    Доступность

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

  • Представляет группу события ID, который использование Multiprocessing Services управлять группами события.

    Объявление

    Swift

    typealias MPEventID = COpaquePointer

    Objective C

    typedef struct OpaqueMPEventID * MPEventID;

    Обсуждение

    Вы получаете группу события ID путем вызывания функции MPCreateEvent.

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

    Objective C

    @import CoreServices;

    Swift

    import CoreServices

    Доступность

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

  • Объявление

    Swift

    struct MPEventInfo { var version: PBVersion var processID: MPProcessID var eventName: OSType var nWaiting: ItemCount var waitingTaskID: MPTaskID var events: MPEventFlags }

    Objective C

    struct MPEventInfo { PBVersion version; MPProcessID processID; OSType eventName; ItemCount nWaiting; MPTaskID waitingTaskID; MPEventFlags events; }; typedef struct MPEventInfo MPEventInfo;

    Доступность

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

  • Представляет вид выданного исключения.

    Объявление

    Swift

    typealias MPExceptionKind = UInt32

    Objective C

    typedef UInt32 MPExceptionKind;

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

    Objective C

    @import CoreServices;

    Swift

    import CoreServices

    Доступность

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

  • Представляет уведомление ID, который использование Multiprocessing Services управлять уведомлениями ядра.

    Объявление

    Swift

    typealias MPNotificationID = COpaquePointer

    Objective C

    typedef struct OpaqueMPNotificationID * MPNotificationID;

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

    Objective C

    @import CoreServices;

    Swift

    import CoreServices

    Доступность

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

  • Объявление

    Swift

    struct MPNotificationInfo { var version: PBVersion var processID: MPProcessID var notificationName: OSType var queueID: MPQueueID var p1: UnsafeMutablePointer<Void> var p2: UnsafeMutablePointer<Void> var p3: UnsafeMutablePointer<Void> var eventID: MPEventID var events: MPEventFlags var semaphoreID: MPSemaphoreID }

    Objective C

    struct MPNotificationInfo { PBVersion version; MPProcessID processID; OSType notificationName; MPQueueID queueID; void * p1; void * p2; void * p3; MPEventID eventID; MPEventFlags events; MPSemaphoreID semaphoreID; }; typedef struct MPNotificationInfo MPNotificationInfo;

    Доступность

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

  • Представляет универсальное уведомление ID (т.е. ID, который мог быть очередью ID, идентификатор события, уведомление ядра ID или семафорный ID).

    Объявление

    Swift

    typealias MPOpaqueID = COpaquePointer

    Objective C

    typedef struct OpaqueMPOpaqueID * MPOpaqueID;

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

    Objective C

    @import CoreServices;

    Swift

    import CoreServices

    Доступность

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

  • Объявление

    Swift

    typealias MPOpaqueIDClass = UInt32

    Objective C

    typedef UInt32 MPOpaqueIDClass;

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

    Objective C

    @import CoreServices;

    Swift

    import CoreServices

    Доступность

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

  • Объявление

    Swift

    typealias MPPageSizeClass = UInt32

    Objective C

    typedef UInt32 MPPageSizeClass;

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

    Objective C

    @import CoreServices;

    Swift

    import CoreServices

    Доступность

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

  • Представляет процесс ID.

    Объявление

    Swift

    typealias MPProcessID = COpaquePointer

    Objective C

    typedef struct OpaqueMPProcessID * MPProcessID;

    Обсуждение

    Обратите внимание на то, что этот процесс ID идентичен процессу ID (или контекст ID) обработанный менеджером по Фрагменту Кода.

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

    Objective C

    @import CoreServices;

    Swift

    import CoreServices

    Доступность

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

  • Представляет очередь ID, который использование Multiprocessing Services управлять очередями сообщений.

    Объявление

    Swift

    typealias MPQueueID = COpaquePointer

    Objective C

    typedef struct OpaqueMPQueueID * MPQueueID;

    Обсуждение

    Вы получаете очередь ID путем вызывания функции MPCreateQueue.

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

    Objective C

    @import CoreServices;

    Swift

    import CoreServices

    Доступность

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

  • Объявление

    Swift

    struct MPQueueInfo { var version: PBVersion var processID: MPProcessID var queueName: OSType var nWaiting: ItemCount var waitingTaskID: MPTaskID var nMessages: ItemCount var nReserved: ItemCount var p1: UnsafeMutablePointer<Void> var p2: UnsafeMutablePointer<Void> var p3: UnsafeMutablePointer<Void> }

    Objective C

    struct MPQueueInfo { PBVersion version; MPProcessID processID; OSType queueName; ItemCount nWaiting; MPTaskID waitingTaskID; ItemCount nMessages; ItemCount nReserved; void * p1; void * p2; void * p3; }; typedef struct MPQueueInfo MPQueueInfo;

    Доступность

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

  • Представляет семафорное количество.

    Объявление

    Swift

    typealias MPSemaphoreCount = ItemCount

    Objective C

    typedef ItemCount MPSemaphoreCount;

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

    Objective C

    @import CoreServices;

    Swift

    import CoreServices

    Доступность

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

  • Представляет семафорный ID, который использование Multiprocessing Services управлять семафорами.

    Объявление

    Swift

    typealias MPSemaphoreID = COpaquePointer

    Objective C

    typedef struct OpaqueMPSemaphoreID * MPSemaphoreID;

    Обсуждение

    Вы получаете семафорный ID путем вызывания функции MPCreateSemaphore.

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

    Objective C

    @import CoreServices;

    Swift

    import CoreServices

    Доступность

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

  • Объявление

    Swift

    struct MPSemaphoreInfo { var version: PBVersion var processID: MPProcessID var semaphoreName: OSType var nWaiting: ItemCount var waitingTaskID: MPTaskID var maximum: ItemCount var count: ItemCount }

    Objective C

    struct MPSemaphoreInfo { PBVersion version; MPProcessID processID; OSType semaphoreName; ItemCount nWaiting; MPTaskID waitingTaskID; ItemCount maximum; ItemCount count; }; typedef struct MPSemaphoreInfo MPSemaphoreInfo;

    Доступность

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

  • Представляет задачу ID.

    Объявление

    Swift

    typealias MPTaskID = COpaquePointer

    Objective C

    typedef struct OpaqueMPTaskID * MPTaskID;

    Обсуждение

    Вы получаете задачу ID путем вызывания функции MPCreateTask.

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

    Objective C

    @import CoreServices;

    Swift

    import CoreServices

    Доступность

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

  • Содержит информацию о задаче.

    Объявление

    Swift

    struct MPTaskInfo { var version: PBVersion var name: OSType var queueName: OSType var runState: UInt16 var lastCPU: UInt16 var weight: UInt32 var processID: MPProcessID var cpuTime: AbsoluteTime var schedTime: AbsoluteTime var creationTime: AbsoluteTime var codePageFaults: ItemCount var dataPageFaults: ItemCount var preemptions: ItemCount var cpuID: MPCpuID var blockedObject: MPOpaqueID var spaceID: MPAddressSpaceID var stackBase: LogicalAddress var stackLimit: LogicalAddress var stackCurr: LogicalAddress }

    Objective C

    struct MPTaskInfo { PBVersion version; OSType name; OSType queueName; UInt16 runState; UInt16 lastCPU; UInt32 weight; MPProcessID processID; AbsoluteTime cpuTime; AbsoluteTime schedTime; AbsoluteTime creationTime; ItemCount codePageFaults; ItemCount dataPageFaults; ItemCount preemptions; MPCpuID cpuID; MPOpaqueID blockedObject; MPAddressSpaceID spaceID; LogicalAddress stackBase; LogicalAddress stackLimit; LogicalAddress stackCurr; }; typedef struct MPTaskInfo MPTaskInfo;

    Поля

    version

    Версия этой структуры данных.

    name

    Имя задачи.

    queueName

    Четырехбайтовый код, указывающий состояние очереди, ожидающей на задаче.

    runState

    Текущее состояние задачи (выполнение, готовое, или блокированное).

    lastCPU

    Адрес последнего процессора, выполнившего эту задачу.

    weight

    Взвешивание присвоилось к этой задаче.

    processID

    ID процесса, которому принадлежит эта задача.

    cpuTime

    Накопленное процессорное время используется задачей.

    schedTime

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

    creationTime

    Время, когда создавалась задача.

    codePageFaults

    Число отсутствий страницы, произошедших во время выполнения кода.

    dataPageFaults

    Число отсутствий страницы, произошедших во время доступа к данным.

    preemptions

    Число раз эта задача было вытеснено.

    cpuID

    ID последнего процессора, выполнившего эту задачу.

    blockedObject

    Зарезервированный для использования OS X.

    spaceID

    Адресное пространство ID этой задачи.

    stackBase

    Самый низкий адрес памяти штабеля задачи.

    stackLimit

    Самый высокий адрес памяти штабеля задачи.

    stackCurr

    Текущий адрес штабеля.

    Обсуждение

    Если Вы указываете kMPTaskStateTaskInfo постоянный при вызывании функции MPExtractTaskState , Multiprocessing Services возвращает информацию состояния в MPTaskInfo структура.

    Доступность

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

  • Объявление

    Swift

    struct MPTaskInfoVersion2 { var version: PBVersion var name: OSType var queueName: OSType var runState: UInt16 var lastCPU: UInt16 var weight: UInt32 var processID: MPProcessID var cpuTime: AbsoluteTime var schedTime: AbsoluteTime var creationTime: AbsoluteTime var codePageFaults: ItemCount var dataPageFaults: ItemCount var preemptions: ItemCount var cpuID: MPCpuID }

    Objective C

    struct MPTaskInfoVersion2 { PBVersion version; OSType name; OSType queueName; UInt16 runState; UInt16 lastCPU; UInt32 weight; MPProcessID processID; AbsoluteTime cpuTime; AbsoluteTime schedTime; AbsoluteTime creationTime; ItemCount codePageFaults; ItemCount dataPageFaults; ItemCount preemptions; MPCpuID cpuID; }; typedef struct MPTaskInfoVersion2 MPTaskInfoVersion2;

    Доступность

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

  • Объявление

    Swift

    typealias MPTaskStateKind = UInt32

    Objective C

    typedef UInt32 MPTaskStateKind;

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

    Objective C

    @import CoreServices;

    Swift

    import CoreServices

    Доступность

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

  • Представляет относительное взвешивание процессора задачи.

    Объявление

    Swift

    typealias MPTaskWeight = UInt32

    Objective C

    typedef UInt32 MPTaskWeight;

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

    Objective C

    @import CoreServices;

    Swift

    import CoreServices

    Доступность

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

  • Представляет таймер ID.

    Объявление

    Swift

    typealias MPTimerID = COpaquePointer

    Objective C

    typedef struct OpaqueMPTimerID * MPTimerID;

    Обсуждение

    Вы получаете таймер ID путем вызывания функции MPCreateTimer.

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

    Objective C

    @import CoreServices;

    Swift

    import CoreServices

    Доступность

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

  • Представляет индексное значение хранения задачи, используемое функциями, описанными в “Доступе к Переменным Хранения На задачу”.

    Объявление

    Swift

    typealias TaskStorageIndex = ItemCount

    Objective C

    typedef ItemCount TaskStorageIndex;

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

    Objective C

    @import CoreServices;

    Swift

    import CoreServices

    Доступность

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

  • Представляет значение хранения задачи, используемое функциями, описанными в “Доступе к Переменным Хранения На задачу”.

    Объявление

    Swift

    typealias TaskStorageValue = LogicalAddress

    Objective C

    typedef LogicalAddress TaskStorageValue;

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

    Objective C

    @import CoreServices;

    Swift

    import CoreServices

    Доступность

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

Константы

  • Максимальный размер выделения памяти.

    Объявление

    Swift

    var kMPMaxAllocSize: Int { get }

    Objective C

    enum { kMPMaxAllocSize = 1024L * 1024 * 1024 };

    Константы

    • kMPMaxAllocSize

      kMPMaxAllocSize

      Максимальный размер выделения: 1 ГБ.

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

  • Используйте для указания задачи ID.

    Объявление

    Swift

    var kMPNoID: Int { get }

    Objective C

    enum { kMPNoID = kInvalidID };

    Константы

    • kMPNoID

      kMPNoID

      Никакая задача ID.

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

    Обсуждение

    Используемый при вызове MPTaskIsPreemptive если Вы хотите указать текущую задачу.

  • Константы информации о версии структуры данных.

    Объявление

    Swift

    var kMPQueueInfoVersion: Int { get } var kMPSemaphoreInfoVersion: Int { get } var kMPEventInfoVersion: Int { get } var kMPCriticalRegionInfoVersion: Int { get } var kMPNotificationInfoVersion: Int { get } var kMPAddressSpaceInfoVersion: Int { get }

    Objective C

    enum { kMPQueueInfoVersion = 1L | (kOpaqueQueueID << 16), kMPSemaphoreInfoVersion = 1L | (kOpaqueSemaphoreID << 16), kMPEventInfoVersion = 1L | (kOpaqueEventID << 16), kMPCriticalRegionInfoVersion = 1L | (kOpaqueCriticalRegionID << 16), kMPNotificationInfoVersion = 1L | (kOpaqueNotificationID << 16), kMPAddressSpaceInfoVersion = 1L | (kOpaqueAddressSpaceID << 16) };

    Константы

    • kMPQueueInfoVersion

      kMPQueueInfoVersion

      MPQueueInfo версия структуры.

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

    • kMPSemaphoreInfoVersion

      kMPSemaphoreInfoVersion

      MPSemaphoreInfo версия структуры.

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

    • kMPEventInfoVersion

      kMPEventInfoVersion

      MPEventInfo версия структуры.

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

    • kMPCriticalRegionInfoVersion

      kMPCriticalRegionInfoVersion

      MPCriticalRegionInfo версия структуры.

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

    • kMPNotificationInfoVersion

      kMPNotificationInfoVersion

      MPNotificationInfo версия структуры.

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

    • kMPAddressSpaceInfoVersion

      kMPAddressSpaceInfoVersion

      MPAddressSpaceInfo версия структуры.

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

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

    Объявление

    Swift

    var kOpaqueAnyID: Int { get } var kOpaqueProcessID: Int { get } var kOpaqueTaskID: Int { get } var kOpaqueTimerID: Int { get } var kOpaqueQueueID: Int { get } var kOpaqueSemaphoreID: Int { get } var kOpaqueCriticalRegionID: Int { get } var kOpaqueCpuID: Int { get } var kOpaqueAddressSpaceID: Int { get } var kOpaqueEventID: Int { get } var kOpaqueCoherenceID: Int { get } var kOpaqueAreaID: Int { get } var kOpaqueNotificationID: Int { get } var kOpaqueConsoleID: Int { get }

    Objective C

    enum { kOpaqueAnyID = 0, kOpaqueProcessID = 1, kOpaqueTaskID = 2, kOpaqueTimerID = 3, kOpaqueQueueID = 4, kOpaqueSemaphoreID = 5, kOpaqueCriticalRegionID = 6, kOpaqueCpuID = 7, kOpaqueAddressSpaceID = 8, kOpaqueEventID = 9, kOpaqueCoherenceID = 10, kOpaqueAreaID = 11, kOpaqueNotificationID = 12, kOpaqueConsoleID = 13 };

    Константы

    • kOpaqueAnyID

      kOpaqueAnyID

      Любой источник.

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

    • kOpaqueProcessID

      kOpaqueProcessID

      Процесс.

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

    • kOpaqueTaskID

      kOpaqueTaskID

      Задача.

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

    • kOpaqueTimerID

      kOpaqueTimerID

      Таймер.

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

    • kOpaqueQueueID

      kOpaqueQueueID

      Очередь.

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

    • kOpaqueSemaphoreID

      kOpaqueSemaphoreID

      Семафор.

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

    • kOpaqueCriticalRegionID

      kOpaqueCriticalRegionID

      Критическая область.

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

    • kOpaqueCpuID

      kOpaqueCpuID

      ЦП.

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

    • kOpaqueAddressSpaceID

      kOpaqueAddressSpaceID

      Адресное пространство.

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

    • kOpaqueEventID

      kOpaqueEventID

      Событие.

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

    • kOpaqueCoherenceID

      kOpaqueCoherenceID

      Группа когерентности.

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

    • kOpaqueAreaID

      kOpaqueAreaID

      Область.

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

    • kOpaqueNotificationID

      kOpaqueNotificationID

      Уведомление.

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

    • kOpaqueConsoleID

      kOpaqueConsoleID

      Консоль.

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

  • Укажите выравнивание желаемого блока памяти при вызове MPAllocateAligned функция.

    Объявление

    Swift

    var kMPAllocateDefaultAligned: Int { get } var kMPAllocate8ByteAligned: Int { get } var kMPAllocate16ByteAligned: Int { get } var kMPAllocate32ByteAligned: Int { get } var kMPAllocate1024ByteAligned: Int { get } var kMPAllocate4096ByteAligned: Int { get } var kMPAllocateMaxAlignment: Int { get } var kMPAllocateAltiVecAligned: Int { get } var kMPAllocateVMXAligned: Int { get } var kMPAllocateVMPageAligned: Int { get } var kMPAllocateInterlockAligned: Int { get }

    Objective C

    enum { kMPAllocateDefaultAligned = 0, kMPAllocate8ByteAligned = 3, kMPAllocate16ByteAligned = 4, kMPAllocate32ByteAligned = 5, kMPAllocate1024ByteAligned = 10, kMPAllocate4096ByteAligned = 12, kMPAllocateMaxAlignment = 16, kMPAllocateAltiVecAligned = kMPAllocate16ByteAligned, kMPAllocateVMXAligned = kMPAllocateAltiVecAligned, kMPAllocateVMPageAligned = 254, kMPAllocateInterlockAligned = 255 };

    Константы

    • kMPAllocateDefaultAligned

      kMPAllocateDefaultAligned

      Используйте выравнивание по умолчанию.

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

    • kMPAllocate8ByteAligned

      kMPAllocate8ByteAligned

      Используйте 8-байтовое выравнивание.

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

    • kMPAllocate16ByteAligned

      kMPAllocate16ByteAligned

      Используйте 16-байтовое выравнивание.

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

    • kMPAllocate32ByteAligned

      kMPAllocate32ByteAligned

      Используйте 32-байтовое выравнивание.

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

    • kMPAllocate1024ByteAligned

      kMPAllocate1024ByteAligned

      Используйте 1 024-байтовое выравнивание.

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

    • kMPAllocate4096ByteAligned

      kMPAllocate4096ByteAligned

      Используйте 4 096-байтовое выравнивание.

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

    • kMPAllocateMaxAlignment

      kMPAllocateMaxAlignment

      Используйте максимальное выравнивание (65 536 байтов).

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

    • kMPAllocateAltiVecAligned

      kMPAllocateAltiVecAligned

      Используйте выравнивание AltiVec.

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

    • kMPAllocateVMXAligned

      kMPAllocateVMXAligned

      Используйте VMX (теперь названный AltiVec) выравнивание.

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

    • kMPAllocateVMPageAligned

      kMPAllocateVMPageAligned

      Используйте выравнивание страницы виртуальной памяти. Во время выполнения установлено это выравнивание.

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

    • kMPAllocateInterlockAligned

      kMPAllocateInterlockAligned

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

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

  • Укажите дополнительные действия при вызове MPAllocateAligned функция.

    Объявление

    Swift

    var kMPAllocateClearMask: Int { get } var kMPAllocateGloballyMask: Int { get } var kMPAllocateResidentMask: Int { get } var kMPAllocateNoGrowthMask: Int { get } var kMPAllocateNoCreateMask: Int { get }

    Objective C

    enum { kMPAllocateClearMask = 0x0001, kMPAllocateGloballyMask = 0x0002, kMPAllocateResidentMask = 0x0004, kMPAllocateNoGrowthMask = 0x0010, kMPAllocateNoCreateMask = 0x0020 };

    Константы

    • kMPAllocateClearMask

      kMPAllocateClearMask

      Обнулите выделенный блок памяти.

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

    • kMPAllocateGloballyMask

      kMPAllocateGloballyMask

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

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

    • kMPAllocateResidentMask

      kMPAllocateResidentMask

      Выделите память от резидентной памяти только (т.е. выделенная память не листаема).

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

    • kMPAllocateNoGrowthMask

      kMPAllocateNoGrowthMask

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

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

    • kMPAllocateNoCreateMask

      kMPAllocateNoCreateMask

      Не пытайтесь создать пул, если он еще не существует.

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

  • Указывает уровень отладчика.

    Объявление

    Swift

    typealias MPDebuggerLevel = UInt32

    Objective C

    typedef UInt32 MPDebuggerLevel; enum { kMPLowLevelDebugger = 0x00000000, kMPMidLevelDebugger = 0x10000000, kMPHighLevelDebugger = 0x20000000 };

    Константы

    • kMPLowLevelDebugger

      kMPLowLevelDebugger

      Низкоуровневый отладчик.

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

    • kMPMidLevelDebugger

      kMPMidLevelDebugger

      Отладчик среднего уровня.

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

    • kMPHighLevelDebugger

      kMPHighLevelDebugger

      Высокоуровневый отладчик.

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

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

    Objective C

    @import CoreServices;

    Swift

    import CoreServices

    Доступность

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

  • Идентифицирует текущую версию библиотеки.

    Объявление

    Swift

    var MPLibrary_MajorVersion: Int { get } var MPLibrary_MinorVersion: Int { get } var MPLibrary_Release: Int { get } var MPLibrary_DevelopmentRevision: Int { get }

    Objective C

    enum { MPLibrary_MajorVersion = 2, MPLibrary_MinorVersion = 3, MPLibrary_Release = 1, MPLibrary_DevelopmentRevision = 1 };

    Константы

    • MPLibrary_MajorVersion

      MPLibrary_MajorVersion

      Номер основной версии.

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

    • MPLibrary_MinorVersion

      MPLibrary_MinorVersion

      Номер вспомогательной версии.

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

    • MPLibrary_Release

      MPLibrary_Release

      Номер выпуска.

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

    • MPLibrary_DevelopmentRevision

      MPLibrary_DevelopmentRevision

      Число версии разработки.

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

  • Укажите, при использовании которого контекстам позволяют выполнить функцию обратного вызова MPRemoteCall.

    Объявление

    Swift

    typealias MPRemoteContext = UInt8

    Objective C

    enum { kMPAnyRemoteContext = 0, kMPOwningProcessRemoteContext = 1, kMPInterruptRemoteContext = 2, kMPAsyncInterruptRemoteContext = 3 }; typedef UInt8 MPRemoteContext;

    Константы

    • kMPAnyRemoteContext

      kMPAnyRemoteContext

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

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

    • kMPOwningProcessRemoteContext

      kMPOwningProcessRemoteContext

      Только контекст, которому принадлежит задача, может выполнить функцию.

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

    • kMPInterruptRemoteContext

      kMPInterruptRemoteContext

      Неподдерживаемый в OS X.

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

    • kMPAsyncInterruptRemoteContext

      kMPAsyncInterruptRemoteContext

      Неподдерживаемый в OS X.

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

    Обсуждение

    Эти константы используются для поддержки более старых версий Mac OS и проигнорированы в OS X.

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

    Objective C

    @import CoreServices;

    Swift

    import CoreServices

    Доступность

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

  • Укажите дополнительные действия при вызове MPCreateTask функция.

    Объявление

    Swift

    typealias MPTaskOptions = OptionBits

    Objective C

    enum { kMPCreateTaskSuspendedMask = 1L << 0, kMPCreateTaskTakesAllExceptionsMask = 1L << 1, kMPCreateTaskNotDebuggableMask = 1L << 2, kMPCreateTaskValidOptionsMask = kMPCreateTaskSuspendedMask | kMPCreateTaskTakesAllExceptionsMask | kMPCreateTaskNotDebuggableMask }; typedef OptionBits MPTaskOptions;

    Константы

    • kMPCreateTaskSuspendedMask

      kMPCreateTaskSuspendedMask

      Неподдерживаемый в OS X.

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

    • kMPCreateTaskTakesAllExceptionsMask

      kMPCreateTaskTakesAllExceptionsMask

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

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

    • kMPCreateTaskNotDebuggableMask

      kMPCreateTaskNotDebuggableMask

      Неподдерживаемый в OS X.

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

    • kMPCreateTaskValidOptionsMask

      kMPCreateTaskValidOptionsMask

      Включайте все допустимые опции для этой задачи.

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

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

    Objective C

    @import CoreServices;

    Swift

    import CoreServices

    Доступность

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

  • Укажите действия для принятия исключения, когда передано в action параметр MPDisposeTaskException функция.

    Объявление

    Swift

    var kMPTaskPropagate: Int { get } var kMPTaskResumeStep: Int { get } var kMPTaskResumeBranch: Int { get } var kMPTaskResumeMask: Int { get } var kMPTaskPropagateMask: Int { get } var kMPTaskResumeStepMask: Int { get } var kMPTaskResumeBranchMask: Int { get }

    Objective C

    enum { kMPTaskPropagate = 0, kMPTaskResumeStep = 1, kMPTaskResumeBranch = 2, kMPTaskResumeMask = 0x0000, kMPTaskPropagateMask = 1 << kMPTaskPropagate, kMPTaskResumeStepMask = 1 << kMPTaskResumeStep, kMPTaskResumeBranchMask = 1 << kMPTaskResumeBranch };

    Константы

    • kMPTaskPropagate

      kMPTaskPropagate

      Исключение распространено.

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

    • kMPTaskResumeStep

      kMPTaskResumeStep

      Задача возобновляется, и единственный шаг включен.

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

    • kMPTaskResumeBranch

      kMPTaskResumeBranch

      Задача возобновляется, и продвижение ответвления включено.

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

    • kMPTaskResumeMask

      kMPTaskResumeMask

      Возобновите задачу.

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

    • kMPTaskPropagateMask

      kMPTaskPropagateMask

      Распространите исключение к следующему уровню отладчика.

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

    • kMPTaskResumeStepMask

      kMPTaskResumeStepMask

      Возобновите задачу и включите единственное продвижение.

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

    • kMPTaskResumeBranchMask

      kMPTaskResumeBranchMask

      Возобновите задачу и включите продвижение ответвления.

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

  • Указывает текущую версию MPTaskInfo структура (возвратился как первое поле).

    Объявление

    Swift

    var kMPTaskInfoVersion: Int { get }

    Objective C

    enum { kMPTaskInfoVersion = 3 };

    Константы

    • kMPTaskInfoVersion

      kMPTaskInfoVersion

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

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

  • Укажите состояние задачи, когда возвращено как часть MPTaskInfo структура данных.

    Объявление

    Swift

    var kMPTaskBlocked: Int { get } var kMPTaskReady: Int { get } var kMPTaskRunning: Int { get }

    Objective C

    enum { kMPTaskBlocked = 0, kMPTaskReady = 1, kMPTaskRunning = 2 };

    Константы

    • kMPTaskBlocked

      kMPTaskBlocked

      Задача блокируется..

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

    • kMPTaskReady

      kMPTaskReady

      Задача готова к выполнению.

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

    • kMPTaskRunning

      kMPTaskRunning

      Задача в настоящее время работает.

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

  • Укажите то, что утверждает, что Вы хотите установить или получить при вызове MPExtractTaskState или MPSetTaskState функции.

    Объявление

    Swift

    var kMPTaskStateRegisters: Int { get } var kMPTaskStateFPU: Int { get } var kMPTaskStateVectors: Int { get } var kMPTaskStateMachine: Int { get } var kMPTaskState32BitMemoryException: Int { get } var kMPTaskStateTaskInfo: Int { get }

    Objective C

    enum { kMPTaskStateRegisters = 0, kMPTaskStateFPU = 1, kMPTaskStateVectors = 2, kMPTaskStateMachine = 3, kMPTaskState32BitMemoryException = 4, kMPTaskStateTaskInfo = 5 };

    Константы

    • kMPTaskStateRegisters

      kMPTaskStateRegisters

      Регистры задачи общего назначения (GP). RegisterInformationPowerPC структура в MachineExceptions.h определяет формат этой информации.

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

    • kMPTaskStateFPU

      kMPTaskStateFPU

      Регистры задачи с плавающей точкой. FPUInformationPowerPC структура в MachineExceptions.h определяет формат этой информации.

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

    • kMPTaskStateVectors

      kMPTaskStateVectors

      Векторные регистры задачи. VectorInformationPowerPC структура в MachineExceptions.h определяет формат этой информации.

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

    • kMPTaskStateMachine

      kMPTaskStateMachine

      Регистры машины задачи. MachineInformationPowerPC структура в MachineExceptions.h определяет формат этой информации. Обратите внимание на то, что MSR, ExceptKind, DSISR и регистры DAR только для чтения.

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

    • kMPTaskState32BitMemoryException

      kMPTaskState32BitMemoryException

      Информация об исключении задачи для более старых 32-разрядных исключений памяти (т.е. исключений памяти на 32-разрядном CPUs). MemoryExceptionInformation структура в MachineExceptions.h определяет формат этой информации. Эта информация об исключении только для чтения.

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

    • kMPTaskStateTaskInfo

      kMPTaskStateTaskInfo

      Статическая и динамическая информация о задаче, как описано по условию структура MPTaskInfo. Эта информация о задаче только для чтения.

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

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

    Объявление

    Swift

    var kDurationImmediate: Int { get } var kDurationForever: Int { get } var kDurationMillisecond: Int { get } var kDurationMicrosecond: Int { get }

    Objective C

    enum { kDurationImmediate = 0, kDurationForever = 0x7FFFFFFF, kDurationMillisecond = 1, kDurationMicrosecond = -1 };

    Константы

    • kDurationImmediate

      kDurationImmediate

      Задача сразу испытывает таймаут, имело ли событие место. Если событие имело место, статус возврата noErr. Если событие не имело место, статус возврата kMPTimeoutErr (принимающий никакие другие ошибки произошел).

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

    • kDurationForever

      kDurationForever

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

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

    • kDurationMillisecond

      kDurationMillisecond

      Задача ожидает одна миллисекунда перед таймаутом.

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

    • kDurationMicrosecond

      kDurationMicrosecond

      Задача ожидает за одну микросекунду до таймаута.

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

    Обсуждение

    Можно использовать эти константы в сочетании с другими значениями для указания определенных интервалов ожидания. Например, для ожидания 1 секунды можно передать kDurationMillisecond * 1000.

  • Укажите дополнительные действия при вызове MPArmTimer.

    Объявление

    Swift

    var kMPPreserveTimerIDMask: Int { get } var kMPTimeIsDeltaMask: Int { get } var kMPTimeIsDurationMask: Int { get }

    Objective C

    enum { kMPPreserveTimerIDMask = 1L << 0, kMPTimeIsDeltaMask = 1L << 1, kMPTimeIsDurationMask = 1L << 2 };

    Константы

    • kMPPreserveTimerIDMask

      kMPPreserveTimerIDMask

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

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

    • kMPTimeIsDeltaMask

      kMPTimeIsDeltaMask

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

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

    • kMPTimeIsDurationMask

      kMPTimeIsDurationMask

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

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

Коды результата

Коды результата, определенные для Multiprocessing Services, упоминаются ниже.

  • Значение

    - 29275

    Описание

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

  • Значение

    - 29276

    Описание

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

  • Значение

    - 29288

    Описание

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

  • Значение

    - 29289

    Описание

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

  • Значение

    - 29290

    Описание

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

  • Желаемая задача блокируется.

    Значение

    - 29291

    Описание

    Желаемая задача блокируется.

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

  • Желаемая задача останавливается.

    Значение

    - 29292

    Описание

    Желаемая задача останавливается.

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

  • Желаемое уведомление, на которое ожидала функция, было удалено.

    Значение

    - 29295

    Описание

    Желаемое уведомление, на которое ожидала функция, было удалено.

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

  • Определяемый интервал тайм-аута передал, прежде чем функция могла принять меры.

    Значение

    - 29296

    Описание

    Определяемый интервал тайм-аута передал, прежде чем функция могла принять меры.

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

  • Не мог выполнить задачу вследствие недоступных ресурсов Multiprocessing Services. Когда желаемое действие не могло быть выполнено, Обратите внимание на то, что много функций возвращают это значение как общую ошибку.

    Значение

    - 29298

    Описание

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

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

  • Недопустимое Значение идентификатора. Например, недопустимая очередь сообщений ID была передана MPNotifyQueue.

    Значение

    - 29299

    Описание

    Недопустимое Значение идентификатора. Например, недопустимая очередь сообщений ID была передана MPNotifyQueue.

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

Константы гештальта

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