Использовать mutex при обращении к любой памяти или только конкретной ячейке?
Есть массив Arr и одна его половина читается одним потоком, а другая другим потоком. Когда устанавливаю релизную конфигурацию то вылетают ошибки Writing Violation.
Вот собственно вопрос. Надо ли блокировать чтение мутексом, когда понятно что потоки точно не будут обращаться к одной ячейке?
Две половинки как 2 отдельных массива обессмысливают проблему полностью.
Скопировать любого осмысленного размера буфер в два других в один поток - ведь это не займет столько времени, как обработка или что у вас там?
LoliDeveloper , какой у этого массива размер, какой тип элементов и какая именно половина каким потоком читается?
Какой закон доступа к элементу из потока? N % 2 или N / 2?
"Writing Violation" означает нарушение записи данных. Наверное у тебя потоки не только читают, но и пишут данные тоже?
LoliDeveloper, Нужен код целиком. Если, как вы говорите, потоки работают с разной памятью (хоть и частью одного массива) - то никаких проблем тут быть не может и мутекс тут не нужен.
LoliDeveloper, ты можешь провести мысленный эксперимент. У тебя есть один поток и один непрерывный буфер памяти, с которым работает этот поток. Тебе нужен мьютекс для этого буфера? Ответ, думаю, очевиден.
И ведь разницы никакой нет, что кроме этого твоего потока есть другие потоки, которые никогда не начнут работать с все тем же буфером памяти. Мьютекс для этого буфера тебе все равно не нужен.
LoliDeveloper, в том случае, когда данные действительно нужно блокировать (это не ваш случай, хотя код вы так и не показали), блокировкой обвешивается любой доступ к данным. В противном случае, будут гонки.