Страницы

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

воскресенье, 22 декабря 2019 г.

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

#cpp #qt #многопоточность #qt5


В справке 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.


В чём смысл и для каких случаев может быть полезно применение данного метода?
    


Ответы

Ответ 1



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

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

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