Если вам придётся прибегать к первому приоритету (особенно вверх), это обычно указывает на недостаток дизайна в параллельных моделях. Это должно быть зарезервировано для особых случаев, таких как поток в реальном времени (например, воспроизведение звука).
Сначала оцените, как работают ваши потоки и задачи, и убедитесь, что у вас нет другого выбора. Как правило, вы можете делать что-то простое, например, уменьшать количество операций максимальной очереди операции, уменьшать общий счетчик потоков или группировать свои задания по требуемому ресурсу.
Какой метод вы используете для определения приоритетов потоков?
Также обратите внимание, что установление приоритета операции влияет на упорядочение операций в очереди (а не на сам поток).
Я всегда мог решить эту проблему, настроив распределение. Вы должны прекратить читать теперь :)
Доступно, но НЕ РЕКОМЕНДУЕТСЯ:
Чтобы понизить приоритет об операции, вы могли бы подойти к нему в вашей Операции main
:
- (void)main
{
@autorelease {
const double priority = [NSThread threadPriority];
const bool isMainThread = [NSThread isMainThread];
if (!isMainThread) {
[NSThread setThreadPriority:priority * 0.5];
}
do_your_work_here
if (!isMainThread) {
[NSThread setThreadPriority:priority];
}
}
}
Если вы действительно нужно нажать ядро после всего этого, так вы можете установить приоритет pthread:
pthreads with real time priority
How to increase thread priority in pthreads?