Я только что реализовал самую первую простую многопоточную очередь заданий в c ++, и я подумал (и прочитал), что это хорошая идея - использовать один рабочий поток для каждого аппаратного потока (в моем случае это будет 4). В основном мое приложение просто загружает много изображений (одновременно) из Интернета прямо сейчас, и я замечаю, что я получаю огромную скорость, если я увеличу количество рабочих потоков до 8 или даже 16 вместо 4.
Существует ли общее правило, сколько потоков использовать в такой очереди заданий? Я предполагаю, что 4 будет большим числом, если я буду создавать новые задания в каждом кадре, а рабочие потоки будут иметь постоянную рабочую нагрузку в каждом кадре, в то время как если я захочу обрабатывать много материала одновременно (например, загрузка 50 изображений или около того) больше потоков, чем это может дать большую скорость. Тем не менее, есть ли практическое правило для правильного числа в различных сценариях?
Спасибо