Страницы

Поиск по вопросам

вторник, 20 ноября 2018 г.

В чём смысл “уступки” выполнения текущего потока иному в QThread?

В справке Qt для статического метода QThread::yieldCurrentThread() сказано, что можно, как я это понимаю, "уступить" (yield) контекст выполнения текущего потока иному потоку:
Yields execution of the current thread to another runnable thread, if any. Note that the operating system decides to which thread to switch.
В чём смысл и для каких случаев может быть полезно применение данного метода?


Ответ

Вообще говоря, инструкция yield говорит планировщику операционной системы, что в настоящее время потоку не требуется процессорное время и планировщик может прервать его исполнение до истечения отведённого потоку кванта времени и передать управление другому потоку. Планировщик может проигнорировать это заявление и не передавать управление другому потоку.
Применять можно, например, для увеличения производительности каких-либо рабочих потоков многопоточных приложений, снижая таким образом производительность вспомогательных потоков. Но следует иметь в виду, что производительность возрастёт только в том случае, когда работающих потоков (реально работающих, а не простаивающих!) больше, чем число ядер процессора.
Польза этого, ИМХО, сомнительная и вместо yield лично я бы использовал приоритеты потоков. На практике я это не использовал ни разу.

Комментариев нет:

Отправить комментарий