Это вопрос производительности чтения в многопоточном коде.
Итак, вот ситуация.У меня есть большой объем данных, которые необходимо знать нескольким тысячам лиц, чтобы отреагировать.Эти данные изменяют каждый кадр, поэтому давайте назовем его frame data
.
У каждого из этих объектов есть функция, которую необходимо запустить, каждый кадр позволяет вызвать ее run()
.Функция run () требует частого чтения (но никогда не записи) в frame data
.Предположим также, что frame data
находится в куче и, следовательно, не клонируется при создании новых потоков.
Все эти объекты могут быть run()
последовательно в одном потоке или если платформа, выполняющая этот код, будет полезна длясущности могут быть объединены в несколько потоков pthreads или каждый run()
в своем собственном pthread.
Таким образом, по существу каждый кадр frame data
обновляется, тогда каждый объект получает run()
в произвольном порядке в произвольном потоке.
Я понимаю, что чтение займет одинаковое количество времени, не смотря ни на что, но меня беспокоит то, что потоки блокируются, ожидая, пока другой поток завершит чтение simulation data
.Является ли это действительной проблемой вообще?
Независимо от стоимости копирования, для меня было бы хорошей идеей сделать копию simulation data
для каждого создаваемого мной потока, или процессор будет работать с несколькими потокамичитаете этот ресурс?Как это изменится, если в стеке будет simulation data
.