Многопроцессорная ссылка служб
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 );Параметры
owningCoherenceIDID группы когерентности памяти, физический процессор которой 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 );Параметры
queueID очереди сообщений Вы хотите удалить.
Возвращаемое значение
Код результата. Посмотрите Коды Результата 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)Резервы располагают с интервалами для сообщений на указанной очереди сообщений.
Параметры
queueID очереди, сообщения которой Вы хотите зарезервировать.
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 );Параметры
queueID очереди сообщений, из которой можно получить уведомление.
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 );Параметры
semaphoreID семафора Вы хотите удалить.
Возвращаемое значение
Код результата. Посмотрите Коды Результата 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 );Параметры
semaphoreID семафора Вы хотите сигнализировать.
Возвращаемое значение
Код результата. Посмотрите Коды Результата 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 );Параметры
semaphoreID семафора Вы хотите ожидать на.
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 и позже не имеют этого ограничения.
notifyQueueID очереди сообщений, в которую система отправит сообщение, когда завершится задача. Вы указываете первые два значения сообщения в параметрах
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 );Параметры
owningProcessIDID процесса (обычно приложение), которому принадлежат задачи. Этот 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 );Параметры
taskID задачи, которой Вы хотите присвоить взвешивание.
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)Завершает существующую задачу.
Параметры
taskID задачи Вы хотите завершиться.
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 );Параметры
criticalRegionID критической области Вы хотите войти.
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 );Параметры
criticalRegionID критической области Вы хотите выйти.
Возвращаемое значение
Код результата. Посмотрите Коды Результата 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 );Параметры
eventID группы события Вы хотите удалить.
Возвращаемое значение
Код результата. Посмотрите Коды Результата 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 );Параметры
eventID группы события Вы хотите установить.
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 );Параметры
notificationIDID уведомления ядра Вы хотите сигнализировать.
Возвращаемое значение
Код результата. Посмотрите Коды Результата 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 );Параметры
notificationIDID уведомления Вы хотите удалить.
Возвращаемое значение
Код результата. Посмотрите Коды Результата 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 );Параметры
notificationIDID уведомления ядра Вы хотите добавить к..
anIDID простого уведомления (семафор, группа сообщений или группа события) Вы хотите добавить к уведомлению ядра.
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 );Параметры
timerIDID таймера Вы хотите вооружиться.
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 );Параметры
timerIDID вооруженного таймера Вы хотите отменить.
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 );Параметры
timerIDID таймера Вы хотите удалить.
Возвращаемое значение
Код результата. Посмотрите Коды Результата 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 );Параметры
timerIDID таймера, информацию об уведомлении которого Вы хотите установить.
notificationIDID механизма уведомления для соединения с таймером. Этим значением должен быть 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 );Параметры
queueID очереди, в которую Вы хотите, чтобы были отправлены сообщения об исключениях и другая информация.
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 );Параметры
queueID очереди, отладчик которой Вы хотите не зарегистрировать.
Возвращаемое значение
Код результата. Посмотрите Коды Результата 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 = COpaquePointerObjective 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 = COpaquePointerObjective C
typedef struct OpaqueMPAreaID * MPAreaID;Оператор импорта
Objective C
@import CoreServices;Swift
import CoreServicesДоступность
Доступный в OS X v10.0 и позже.
-
Представляет группу когерентности памяти.
Объявление
Swift
typealias MPCoherenceID = COpaquePointerObjective C
typedef struct OpaqueMPCoherenceID * MPCoherenceID;Обсуждение
Группа когерентности является набором процессоров и других контроллеров шины, имеющих когерентный кэшем доступ к памяти. Mac OS 9 определяет только одну группу когерентности, которая является всеми процессорами, которые могут получить доступ к внутренней памяти (RAM). Другие группы когерентности возможны; например, плата PCI с ее собственной памятью и процессоры могут включить группу когерентности.
Оператор импорта
Objective C
@import CoreServices;Swift
import CoreServicesДоступность
Доступный в OS X v10.0 и позже.
-
Объявление
Swift
typealias MPConsoleID = COpaquePointerObjective C
typedef struct OpaqueMPConsoleID * MPConsoleID;Оператор импорта
Objective C
@import CoreServices;Swift
import CoreServicesДоступность
Доступный в OS X v10.0 и позже.
-
Представляет CPU ID.
Объявление
Swift
typealias MPCpuID = COpaquePointerObjective C
typedef struct OpaqueMPCpuID * MPCpuID;Оператор импорта
Objective C
@import CoreServices;Swift
import CoreServicesДоступность
Доступный в OS X v10.0 и позже.
-
Представляет критическую область ID, который использование Multiprocessing Services управлять критическими областями.
Объявление
Swift
typealias MPCriticalRegionID = COpaquePointerObjective 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 = UInt32Objective C
typedef UInt32 MPEventFlags;Оператор импорта
Objective C
@import CoreServices;Swift
import CoreServicesДоступность
Доступный в OS X v10.0 и позже.
-
Представляет группу события ID, который использование Multiprocessing Services управлять группами события.
Объявление
Swift
typealias MPEventID = COpaquePointerObjective 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 = UInt32Objective C
typedef UInt32 MPExceptionKind;Оператор импорта
Objective C
@import CoreServices;Swift
import CoreServicesДоступность
Доступный в OS X v10.0 и позже.
-
Представляет уведомление ID, который использование Multiprocessing Services управлять уведомлениями ядра.
Объявление
Swift
typealias MPNotificationID = COpaquePointerObjective 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 = COpaquePointerObjective C
typedef struct OpaqueMPOpaqueID * MPOpaqueID;Оператор импорта
Objective C
@import CoreServices;Swift
import CoreServicesДоступность
Доступный в OS X v10.0 и позже.
-
Объявление
Swift
typealias MPOpaqueIDClass = UInt32Objective C
typedef UInt32 MPOpaqueIDClass;Оператор импорта
Objective C
@import CoreServices;Swift
import CoreServicesДоступность
Доступный в OS X v10.0 и позже.
-
Объявление
Swift
typealias MPPageSizeClass = UInt32Objective C
typedef UInt32 MPPageSizeClass;Оператор импорта
Objective C
@import CoreServices;Swift
import CoreServicesДоступность
Доступный в OS X v10.0 и позже.
-
Представляет процесс ID.
Объявление
Swift
typealias MPProcessID = COpaquePointerObjective 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 = COpaquePointerObjective 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 = ItemCountObjective C
typedef ItemCount MPSemaphoreCount;Оператор импорта
Objective C
@import CoreServices;Swift
import CoreServicesДоступность
Доступный в OS X v10.0 и позже.
-
Представляет семафорный ID, который использование Multiprocessing Services управлять семафорами.
Объявление
Swift
typealias MPSemaphoreID = COpaquePointerObjective 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 = COpaquePointerObjective 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Взвешивание присвоилось к этой задаче.
processIDID процесса, которому принадлежит эта задача.
cpuTimeНакопленное процессорное время используется задачей.
schedTimeВремя, когда была в последний раз запланирована задача.
creationTimeВремя, когда создавалась задача.
codePageFaultsЧисло отсутствий страницы, произошедших во время выполнения кода.
dataPageFaultsЧисло отсутствий страницы, произошедших во время доступа к данным.
preemptionsЧисло раз эта задача было вытеснено.
cpuIDID последнего процессора, выполнившего эту задачу.
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 = UInt32Objective C
typedef UInt32 MPTaskStateKind;Оператор импорта
Objective C
@import CoreServices;Swift
import CoreServicesДоступность
Доступный в OS X v10.0 и позже.
-
Представляет относительное взвешивание процессора задачи.
Объявление
Swift
typealias MPTaskWeight = UInt32Objective C
typedef UInt32 MPTaskWeight;Оператор импорта
Objective C
@import CoreServices;Swift
import CoreServicesДоступность
Доступный в OS X v10.0 и позже.
-
Представляет таймер ID.
Объявление
Swift
typealias MPTimerID = COpaquePointerObjective C
typedef struct OpaqueMPTimerID * MPTimerID;Обсуждение
Вы получаете таймер ID путем вызывания функции
MPCreateTimer.Оператор импорта
Objective C
@import CoreServices;Swift
import CoreServicesДоступность
Доступный в OS X v10.0 и позже.
-
Представляет индексное значение хранения задачи, используемое функциями, описанными в “Доступе к Переменным Хранения На задачу”.
Объявление
Swift
typealias TaskStorageIndex = ItemCountObjective C
typedef ItemCount TaskStorageIndex;Оператор импорта
Objective C
@import CoreServices;Swift
import CoreServicesДоступность
Доступный в OS X v10.0 и позже.
-
Представляет значение хранения задачи, используемое функциями, описанными в “Доступе к Переменным Хранения На задачу”.
Объявление
Swift
typealias TaskStorageValue = LogicalAddressObjective 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) };Константы
-
kMPQueueInfoVersionkMPQueueInfoVersionMPQueueInfoверсия структуры.Доступный в OS X v10.0 и позже.
-
kMPSemaphoreInfoVersionkMPSemaphoreInfoVersionMPSemaphoreInfoверсия структуры.Доступный в OS X v10.0 и позже.
-
kMPEventInfoVersionkMPEventInfoVersionMPEventInfoверсия структуры.Доступный в OS X v10.0 и позже.
-
kMPCriticalRegionInfoVersionkMPCriticalRegionInfoVersionMPCriticalRegionInfoверсия структуры.Доступный в OS X v10.0 и позже.
-
kMPNotificationInfoVersionkMPNotificationInfoVersionMPNotificationInfoверсия структуры.Доступный в OS X v10.0 и позже.
-
kMPAddressSpaceInfoVersionkMPAddressSpaceInfoVersionMPAddressSpaceInfoверсия структуры.Доступный в 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 };Константы
-
kOpaqueAnyIDkOpaqueAnyIDЛюбой источник.
Доступный в OS X v10.0 и позже.
-
kOpaqueProcessIDkOpaqueProcessIDПроцесс.
Доступный в OS X v10.0 и позже.
-
kOpaqueTaskIDkOpaqueTaskIDЗадача.
Доступный в OS X v10.0 и позже.
-
kOpaqueTimerIDkOpaqueTimerIDТаймер.
Доступный в OS X v10.0 и позже.
-
kOpaqueQueueIDkOpaqueQueueIDОчередь.
Доступный в OS X v10.0 и позже.
-
kOpaqueSemaphoreIDkOpaqueSemaphoreIDСемафор.
Доступный в OS X v10.0 и позже.
-
kOpaqueCriticalRegionIDkOpaqueCriticalRegionIDКритическая область.
Доступный в OS X v10.0 и позже.
-
kOpaqueCpuIDkOpaqueCpuIDЦП.
Доступный в OS X v10.0 и позже.
-
kOpaqueAddressSpaceIDkOpaqueAddressSpaceIDАдресное пространство.
Доступный в OS X v10.0 и позже.
-
kOpaqueEventIDkOpaqueEventIDСобытие.
Доступный в OS X v10.0 и позже.
-
kOpaqueCoherenceIDkOpaqueCoherenceIDГруппа когерентности.
Доступный в OS X v10.0 и позже.
-
kOpaqueAreaIDkOpaqueAreaIDОбласть.
Доступный в OS X v10.0 и позже.
-
kOpaqueNotificationIDkOpaqueNotificationIDУведомление.
Доступный в OS X v10.0 и позже.
-
kOpaqueConsoleIDkOpaqueConsoleIDКонсоль.
Доступный в 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 };Константы
-
kMPAllocateDefaultAlignedkMPAllocateDefaultAlignedИспользуйте выравнивание по умолчанию.
Доступный в OS X v10.0 и позже.
-
kMPAllocate8ByteAlignedkMPAllocate8ByteAlignedИспользуйте 8-байтовое выравнивание.
Доступный в OS X v10.0 и позже.
-
kMPAllocate16ByteAlignedkMPAllocate16ByteAlignedИспользуйте 16-байтовое выравнивание.
Доступный в OS X v10.0 и позже.
-
kMPAllocate32ByteAlignedkMPAllocate32ByteAlignedИспользуйте 32-байтовое выравнивание.
Доступный в OS X v10.0 и позже.
-
kMPAllocate1024ByteAlignedkMPAllocate1024ByteAlignedИспользуйте 1 024-байтовое выравнивание.
Доступный в OS X v10.0 и позже.
-
kMPAllocate4096ByteAlignedkMPAllocate4096ByteAlignedИспользуйте 4 096-байтовое выравнивание.
Доступный в OS X v10.0 и позже.
-
kMPAllocateMaxAlignmentkMPAllocateMaxAlignmentИспользуйте максимальное выравнивание (65 536 байтов).
Доступный в OS X v10.0 и позже.
-
kMPAllocateAltiVecAlignedkMPAllocateAltiVecAlignedИспользуйте выравнивание AltiVec.
Доступный в OS X v10.0 и позже.
-
kMPAllocateVMXAlignedkMPAllocateVMXAlignedИспользуйте VMX (теперь названный AltiVec) выравнивание.
Доступный в OS X v10.0 и позже.
-
kMPAllocateVMPageAlignedkMPAllocateVMPageAlignedИспользуйте выравнивание страницы виртуальной памяти. Во время выполнения установлено это выравнивание.
Доступный в OS X v10.0 и позже.
-
kMPAllocateInterlockAlignedkMPAllocateInterlockAlignedИспользуйте выравнивание взаимной блокировки, которое является выравниванием, должен был позволить использование инструкций взаимной блокировки 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 };Константы
-
kMPAllocateClearMaskkMPAllocateClearMaskОбнулите выделенный блок памяти.
Доступный в OS X v10.0 и позже.
-
kMPAllocateGloballyMaskkMPAllocateGloballyMaskВыделите память от в пространстве памяти, которое видимо ко всем процессам. Когда процесс выделения завершается, Обратите внимание на то, что в отношении такого глобально выделенного пространства автоматически не предъявляют претензии. По умолчанию,
MPAllocateAlignedвыделяет память от специфичного для процесса (т.е. не глобальная переменная) память.Доступный в OS X v10.0 и позже.
-
kMPAllocateResidentMaskkMPAllocateResidentMaskВыделите память от резидентной памяти только (т.е. выделенная память не листаема).
Доступный в OS X v10.0 и позже.
-
kMPAllocateNoGrowthMaskkMPAllocateNoGrowthMaskНе пытайтесь увеличить пул доступной памяти. Указание этой опции полезно, поскольку пытающийся увеличить память может вызвать Вашу задачу блокировать, пока такая память не становится доступной.
Доступный в OS X v10.0 и позже.
-
kMPAllocateNoCreateMaskkMPAllocateNoCreateMaskНе пытайтесь создать пул, если он еще не существует.
Доступный в OS X v10.1 и позже.
-
-
Указывает уровень отладчика.
Объявление
Swift
typealias MPDebuggerLevel = UInt32Objective C
typedef UInt32 MPDebuggerLevel; enum { kMPLowLevelDebugger = 0x00000000, kMPMidLevelDebugger = 0x10000000, kMPHighLevelDebugger = 0x20000000 };Константы
-
kMPLowLevelDebuggerkMPLowLevelDebuggerНизкоуровневый отладчик.
Доступный в OS X v10.1 и позже.
-
kMPMidLevelDebuggerkMPMidLevelDebuggerОтладчик среднего уровня.
Доступный в OS X v10.1 и позже.
-
kMPHighLevelDebuggerkMPHighLevelDebuggerВысокоуровневый отладчик.
Доступный в 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_MajorVersionMPLibrary_MajorVersionНомер основной версии.
Доступный в OS X v10.0 и позже.
-
MPLibrary_MinorVersionMPLibrary_MinorVersionНомер вспомогательной версии.
Доступный в OS X v10.0 и позже.
-
MPLibrary_ReleaseMPLibrary_ReleaseНомер выпуска.
Доступный в OS X v10.0 и позже.
-
MPLibrary_DevelopmentRevisionMPLibrary_DevelopmentRevisionЧисло версии разработки.
Доступный в OS X v10.0 и позже.
-
-
Укажите, при использовании которого контекстам позволяют выполнить функцию обратного вызова
MPRemoteCall.Объявление
Swift
typealias MPRemoteContext = UInt8Objective C
enum { kMPAnyRemoteContext = 0, kMPOwningProcessRemoteContext = 1, kMPInterruptRemoteContext = 2, kMPAsyncInterruptRemoteContext = 3 }; typedef UInt8 MPRemoteContext;Константы
-
kMPAnyRemoteContextkMPAnyRemoteContextЛюбой совместный контекст может выполнить функцию. Обратите внимание на то, что вызванная функция может не иметь доступа ни к одному из специфичных для процесса значений низкой памяти контекста владения.
Доступный в OS X v10.0 и позже.
-
kMPOwningProcessRemoteContextkMPOwningProcessRemoteContextТолько контекст, которому принадлежит задача, может выполнить функцию.
Доступный в OS X v10.0 и позже.
-
kMPInterruptRemoteContextkMPInterruptRemoteContextНеподдерживаемый в OS X.
Доступный в OS X v10.1 и позже.
-
kMPAsyncInterruptRemoteContextkMPAsyncInterruptRemoteContextНеподдерживаемый в 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 = OptionBitsObjective C
enum { kMPCreateTaskSuspendedMask = 1L << 0, kMPCreateTaskTakesAllExceptionsMask = 1L << 1, kMPCreateTaskNotDebuggableMask = 1L << 2, kMPCreateTaskValidOptionsMask = kMPCreateTaskSuspendedMask | kMPCreateTaskTakesAllExceptionsMask | kMPCreateTaskNotDebuggableMask }; typedef OptionBits MPTaskOptions;Константы
-
kMPCreateTaskSuspendedMaskkMPCreateTaskSuspendedMaskНеподдерживаемый в OS X.
Доступный в OS X v10.0 и позже.
-
kMPCreateTaskTakesAllExceptionsMaskkMPCreateTaskTakesAllExceptionsMaskЗадача выдвинет все возражения, включая обычно обработанных системой, такие как отсутствия страницы.
Доступный в OS X v10.0 и позже.
-
kMPCreateTaskNotDebuggableMaskkMPCreateTaskNotDebuggableMaskНеподдерживаемый в OS X.
Доступный в OS X v10.1 и позже.
-
kMPCreateTaskValidOptionsMaskkMPCreateTaskValidOptionsMaskВключайте все допустимые опции для этой задачи.
Доступный в 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 };Константы
-
kMPTaskPropagatekMPTaskPropagateИсключение распространено.
Доступный в OS X v10.0 и позже.
-
kMPTaskResumeStepkMPTaskResumeStepЗадача возобновляется, и единственный шаг включен.
Доступный в OS X v10.0 и позже.
-
kMPTaskResumeBranchkMPTaskResumeBranchЗадача возобновляется, и продвижение ответвления включено.
Доступный в OS X v10.0 и позже.
-
kMPTaskResumeMaskkMPTaskResumeMaskВозобновите задачу.
Доступный в OS X v10.0 и позже.
-
kMPTaskPropagateMaskkMPTaskPropagateMaskРаспространите исключение к следующему уровню отладчика.
Доступный в OS X v10.0 и позже.
-
kMPTaskResumeStepMaskkMPTaskResumeStepMaskВозобновите задачу и включите единственное продвижение.
Доступный в OS X v10.0 и позже.
-
kMPTaskResumeBranchMaskkMPTaskResumeBranchMaskВозобновите задачу и включите продвижение ответвления.
Доступный в 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 };Константы
-
kMPTaskStateRegisterskMPTaskStateRegistersРегистры задачи общего назначения (GP).
RegisterInformationPowerPCструктура вMachineExceptions.hопределяет формат этой информации.Доступный в OS X v10.0 и позже.
-
kMPTaskStateFPUkMPTaskStateFPUРегистры задачи с плавающей точкой.
FPUInformationPowerPCструктура вMachineExceptions.hопределяет формат этой информации.Доступный в OS X v10.0 и позже.
-
kMPTaskStateVectorskMPTaskStateVectorsВекторные регистры задачи.
VectorInformationPowerPCструктура вMachineExceptions.hопределяет формат этой информации.Доступный в OS X v10.0 и позже.
-
kMPTaskStateMachinekMPTaskStateMachineРегистры машины задачи.
MachineInformationPowerPCструктура вMachineExceptions.hопределяет формат этой информации. Обратите внимание на то, что MSR, ExceptKind, DSISR и регистры DAR только для чтения.Доступный в OS X v10.0 и позже.
-
kMPTaskState32BitMemoryExceptionkMPTaskState32BitMemoryExceptionИнформация об исключении задачи для более старых 32-разрядных исключений памяти (т.е. исключений памяти на 32-разрядном CPUs).
MemoryExceptionInformationструктура вMachineExceptions.hопределяет формат этой информации. Эта информация об исключении только для чтения.Доступный в OS X v10.0 и позже.
-
kMPTaskStateTaskInfokMPTaskStateTaskInfoСтатическая и динамическая информация о задаче, как описано по условию структура
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 };Константы
-
kDurationImmediatekDurationImmediateЗадача сразу испытывает таймаут, имело ли событие место. Если событие имело место, статус возврата
noErr. Если событие не имело место, статус возвратаkMPTimeoutErr(принимающий никакие другие ошибки произошел).Доступный в OS X v10.0 и позже.
-
kDurationForeverkDurationForeverЗадача ожидает навсегда. Вызов блокирования ожидает, или до событие имеет место, или до пока не удален объект, ожидающий на (такой как очередь сообщений).
Доступный в OS X v10.0 и позже.
-
kDurationMillisecondkDurationMillisecondЗадача ожидает одна миллисекунда перед таймаутом.
Доступный в OS X v10.0 и позже.
-
kDurationMicrosecondkDurationMicrosecondЗадача ожидает за одну микросекунду до таймаута.
Доступный в 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 };Константы
-
kMPPreserveTimerIDMaskkMPPreserveTimerIDMaskУказание этой маски препятствует тому, чтобы таймер был удален, когда это истекает.
Доступный в OS X v10.0 и позже.
-
kMPTimeIsDeltaMaskkMPTimeIsDeltaMaskУказание этой маски указывает, что требуемое время должно быть добавлено к предыдущему разу для формирования нового времени истечения срока. Можно использовать эту маску для компенсации синхронизацию смещения, вызванного конечным количеством времени, требуемым вооружить таймер, получить уведомление, и т.д.
Доступный в OS X v10.0 и позже.
-
kMPTimeIsDurationMaskkMPTimeIsDurationMaskУказание этой маски указывает, что указанное время истечения срока имеет тип
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 при помощи приоритетных функциональных селекторов атрибута, определенных в менеджере по Гештальту. Для получения дополнительной информации посмотрите менеджера по Гештальту Референса.
