Технически да. Вы можете использовать больше потоков для чтения из разных мест в памяти. Процессор быстрее, поэтому он может выдавать много чтений, например, один читать на поток, пока не вернется результат от первого чтения. Затем начните обработку запросов. Это работает, если ОЗУ не блокируется; т.е. поддерживает сразу несколько считываний. Например, у вашей памяти есть только 1 входная линия и 1 выходная линия, тогда она будет блокировать, и никакое количество потоков не поможет.
Теперь имейте в виду, что именно вы делаете с данными, которые вы читаете. Если вы отправляете его по сети синхронно или выгружаете на жесткий диск, это не обязательно означает, что вы должны использовать многопоточность для чтения данных, поскольку это будет узким местом для write_to_HDD/sendData.
Если у вас есть еще один процессор, ожидающий обработки извлеченных данных, тогда вы можете парализовать хорошо. Прочитайте и обработайте одновременно.
Я не думаю, что локальность данных очень полезна, так как мои элементы большие и доступны случайным образом. Но означает ли это, что соединение между процессором и памятью позволяет выполнять параллельное выполнение чтения, если данные существуют в разных частях памяти? – Daniel
Ну, если ваши данные указывают этот размер, ответ определенно да! Не забудьте проложить элементы массива до ближайшего кратного размера слова процессора (смещение может быть значительным когда-то). – Maghis
Имеет ли связь между процессором и памятью возможность параллельного выполнения чтения, если данные существуют в разных частях памяти? – Daniel