Многопроцессорная ссылка служб
Multiprocessing Services является API, позволяющий Вам создать приоритетные задачи в своем приложении, которое может работать на одном или более микропроцессорах. В отличие от совместных потоков, создаваемых менеджером по Потоку, Multiprocessing Services автоматически делит процессорное время между доступными задачами, так, чтобы никакая определенная задача не могла монополизировать систему. Если Вы хотите добавить многозадачную возможность к своим приложениям Mac OS, этот документ относится к Вам.
В OS X Углерод поддерживает Multiprocessing Services со следующими ограничениями:
Функции отладки не реализованы. Используйте Маха APIs, предоставленный системой для реализации служб отладки.
Непрозрачное уведомление IDs локально для Вашего процесса; они не глобально адресуемы через процессы.
Выделение глобальной памяти не поддерживается.
-
Указывает, доступна ли Multiprocessing Services для использования.
Объявление
Objective C
Boolean _MPIsFullyInitialized ( void );
Возвращаемое значение
Если это правда, Multiprocessing Services доступна для использования; иначе, ложь.
-
MPGetNextCpuID MPGetNextCpuID
(OS X v10.7)Получает следующий 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.
-
MPProcessorsScheduled MPProcessorsScheduled
(OS X v10.7)Возвращает число активных процессоров, доступных на главном компьютере.
Объявление
Objective C
ItemCount MPProcessorsScheduled ( void );
Возвращаемое значение
Число активных процессоров, доступных на главном компьютере.
Обсуждение
Число активных процессоров определяется, поскольку число процессоров запланировало выполнять задачи. В то время как система работает, это число варьируется. Усовершенствованные средства управления питанием могут остановить или начать планировать процессоры в системе, чтобы управлять потребляемой мощностью или поддержать надлежащую рабочую температуру.
См. также функцию
MPProcessors
.Оператор импорта
Objective C
@import CoreServices;
Доступность
Доступный в OS X v10.0 и позже.
Осуждаемый в OS X v10.7.
-
MPCreateQueue MPCreateQueue
(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.
-
MPDeleteQueue MPDeleteQueue
(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.
-
MPNotifyQueue MPNotifyQueue
(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.
-
MPSetQueueReserve MPSetQueueReserve
(OS X v10.7)Резервы располагают с интервалами для сообщений на указанной очереди сообщений.
Параметры
queue
ID очереди, сообщения которой Вы хотите зарезервировать.
count
Число сообщений для резервирования.
Возвращаемое значение
Код результата. Посмотрите Коды Результата Multiprocessing Services.
Обсуждение
MPNotifyQueue
выделяет места для сообщений динамично; т.е. память для содержания сообщения выделяется для очереди во время вызова. В большинстве случаев этот метод является и скоростью и эффективным хранением. Однако возможно, что вследствие отсутствия ресурсов памяти пространство для сообщения может не быть доступным во время вызова; в таких случаях,MPNotifyQueue
возвратитсяkInsufficientResourcesErr
.Если необходимо вызвать, если Вы, должно быть, гарантировали доставку сообщений, или
MPNotifyQueue
от обработчика прерываний необходимо зарезервировать пространство на указанной очереди путем вызоваMPSetQueueReserve
. Поскольку такая выделенная площадь резервируется на время существования очереди, необходимо избежать напрягать внутренние системные ресурсы путем резервирования сообщений только при необходимости. Если число сообщений превышает число, зарезервированное для той очереди, Обратите внимание на то, что при резервировании сообщений на очереди дополнительное пространство не может быть добавлено динамично.Номер зарезервированных сообщений определяется к
count
, понижение или увеличение текущего числа зарезервированных сообщений как требуется. Еслиcount
обнуляется, никакие сообщения не резервируются для очереди, и площадь для сообщений выделена динамично.Оператор импорта
Objective C
@import CoreServices;
Доступность
Доступный в OS X v10.0 и позже.
Осуждаемый в OS X v10.7.
-
MPWaitOnQueue MPWaitOnQueue
(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.
-
MPCreateSemaphore MPCreateSemaphore
(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.
-
MPDeleteSemaphore MPDeleteSemaphore
(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.
-
MPSignalSemaphore MPSignalSemaphore
(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.
-
MPWaitOnSemaphore MPWaitOnSemaphore
(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.
-
MPCurrentTaskID MPCurrentTaskID
(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.
-
MPSetTaskType MPSetTaskType
(OS X v10.8)Устанавливает тип задачи.
Объявление
Objective C
OSStatus MPSetTaskType ( MPTaskID task, OSType taskType );
Возвращаемое значение
noErr
код результата. Посмотрите Коды Результата Multiprocessing Services.Обсуждение
Эта функция ничего не делает и не должна использоваться.
Оператор импорта
Objective C
@import CoreServices;
Доступность
Доступный в OS X v10.1 и позже.
Осуждаемый в OS X v10.8.
-
Позволяет задаче завершить себя
Объявление
Objective C
void MPExit ( OSStatus status );
Параметры
status
Определенное с помощью приложения значение, указывающее состояние завершения. Это значение отправляется в очередь сообщений завершения вместо кода результата задачи.
Обсуждение
Когда вызвано из приоритетной задачи, задача завершается, и значение, обозначенное параметром
status
отправляется в очередь сообщений завершения, в которой Вы указалиMPCreateTask
. Обратите внимание на то, что Вы не можете вызватьMPExit
извне приоритетной задачи.Оператор импорта
Objective C
@import CoreServices;
Доступность
Доступный в OS X v10.0 и позже.
Осуждаемый в OS X v10.7.
-
MPGetNextTaskID MPGetNextTaskID
(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.
-
MPSetTaskWeight MPSetTaskWeight
(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.
-
MPTaskIsPreemptive MPTaskIsPreemptive
(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.
-
MPTerminateTask MPTerminateTask
(OS X v10.7)Завершает существующую задачу.
Параметры
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.
-
Позволяет задаче привести к процессору другой задаче.
Объявление
Objective C
void MPYield ( void );
Обсуждение
Эта функция указывает к планировщику, что может работать другая задача. Кроме возможного получения процессора к другой задаче или приложению, вызов не имеет никакого эффекта. Обратите внимание на то, что, так как задачи преимущественно планируются, неявный доход может произойти в любой точке, вызвана ли эта функция.
В большинстве случаев Вы не должны должны быть вызывать эту функцию. Наиболее популярный способ использования
MPYield
должен выпустить процессор, когда задача находится в цикле, в котором дальнейший прогресс зависит от других задач, и задача не может быть блокирована путем ожидания на ресурсе Multiprocessing Services. Необходимо избежать такого активного ожидания, когда это возможно.Обратите внимание на то, что можно вызвать эту функцию от обработчика прерываний.
Оператор импорта
Objective C
@import CoreServices;
Доступность
Доступный в OS X v10.0 и позже.
Осуждаемый в OS X v10.7.
-
MPCreateCriticalRegion MPCreateCriticalRegion
(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.
-
MPDeleteCriticalRegion MPDeleteCriticalRegion
(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.
-
MPEnterCriticalRegion MPEnterCriticalRegion
(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.
-
MPExitCriticalRegion MPExitCriticalRegion
(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.
-
MPCreateEvent MPCreateEvent
(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.
-
MPDeleteEvent MPDeleteEvent
(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.
-
MPWaitForEvent MPWaitForEvent
(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.
-
MPCauseNotification MPCauseNotification
(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.
-
MPCreateNotification MPCreateNotification
(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.
-
MPDeleteNotification MPDeleteNotification
(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.
-
MPModifyNotification MPModifyNotification
(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.
-
MPAllocateTaskStorageIndex MPAllocateTaskStorageIndex
(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.
-
MPDeallocateTaskStorageIndex MPDeallocateTaskStorageIndex
(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.
-
MPGetTaskStorageValue MPGetTaskStorageValue
(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.
-
MPSetTaskStorageValue MPSetTaskStorageValue
(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.
-
MPAllocateAligned MPAllocateAligned
(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-разрядным приложениям.
-
Освобождает память, выделенную
MPAllocateAligned
.Объявление
Objective C
void MPFree ( LogicalAddress object );
Параметры
object
Указатель на память Вы хотите выпустить.
Обсуждение
Также посмотрите функцию
MPAllocateAligned
.Оператор импорта
Objective C
@import CoreServices;
Доступность
Доступный в OS X v10.0 и позже.
Осуждаемый в OS X v10.7.
-
MPGetAllocatedBlockSize MPGetAllocatedBlockSize
(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.
-
MPRemoteCallCFM MPRemoteCallCFM
(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.
-
MPCancelTimer MPCancelTimer
(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.
-
MPCreateTimer MPCreateTimer
(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.
-
MPDeleteTimer MPDeleteTimer
(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.
-
MPSetTimerNotify MPSetTimerNotify
(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.
-
MPDisposeTaskException MPDisposeTaskException
(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.
-
MPExtractTaskState MPExtractTaskState
(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.
-
MPSetExceptionHandler MPSetExceptionHandler
(OS X v10.7)Устанавливает обработчик исключений для задачи.
Параметры
task
Задача связаться с обработчиком исключений.
exceptionQ
Очередь сообщений, в которую будет отправлено сообщение об исключении.
Возвращаемое значение
Код результата. Посмотрите Коды Результата Multiprocessing Services.
Обсуждение
Когда обработчик исключений установлен, и исключение происходит, задача приостановлена, и сообщение отправляется в очередь сообщений, указанную
exceptionQ
. Сообщение содержит следующую информацию:Первое значение размера указателя содержит ID задачи, в которой произошло исключение.
Второе значение размера указателя содержит тип произошедшего исключения. Посмотрите заголовочный файл
MachineExceptions.h
для перечисления типов исключительной ситуации.Последнее значение размера указателя установлено в
NULL
(зарезервированный для будущего использования).
Оператор импорта
Objective C
@import CoreServices;
Доступность
Доступный в OS X v10.0 и позже.
Осуждаемый в OS X v10.7.
-
MPSetTaskState MPSetTaskState
(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.
-
MPThrowException MPThrowException
(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.
-
MPRegisterDebugger MPRegisterDebugger
(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.
-
MPUnregisterDebugger MPUnregisterDebugger
(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 };
Константы
-
Используйте для указания задачи ID.
Константы
Обсуждение
Используемый при вызове
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
структура (возвратился как первое поле).Константы
-
Укажите состояние задачи, когда возвращено как часть
MPTaskInfo
структура данных.Объявление
Objective C
enum { kMPTaskBlocked = 0, kMPTaskReady = 1, kMPTaskRunning = 2 };
Константы
-
Укажите то, что утверждает, что Вы хотите установить или получить при вызове
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 при помощи приоритетных функциональных селекторов атрибута, определенных в менеджере по Гештальту. Для получения дополнительной информации посмотрите менеджера по Гештальту Референса.