Предположим, у меня есть указатель на указатель на указатель, т. Е. Int *** ptr, где он содержит трехмерный массив. В зависимости от процессора я хочу иметь примерно три потока, записывающих и считывающих одновременно мой указатель. Для простоты, ptr не будет перенаправлен (я все еще хочу знать, как обращаться с многопоточным, если мне нужно было переназначить указатель). Я хочу писать одновременно с указателем без использования мьютексов, потому что он блокирует другие потоки. Как мне это сделать? Я до сих пор не совсем понимаю атомные шаблоны ...C++ многопоточный указатель на указатель на указатель
Спасибо! :)
Мьютекс - это то, как вы * будете обрабатывать параллелизм в этом ... Если вы меняете, где указатели указывают, вы не хотите, чтобы другие потоки смотрели не туда ... –
Собственно, я не меняю сам указатель; Я изменяю значение, на которое указывает указатель. Пример: ptr [0] [0] [0] = что-то. – Thecheeselover
@ user2924010 Если у вас действительно нет изменения размера, то есть вы в основном имеете 'myArray [x] [y] [z]' с значениями времени выполнения, тогда вы должны быть в порядке с 'std :: atomic'. Таким образом, все элементы «безопасны» для чтения и записи. Если какой-либо из массивов должен измениться, вам потребуется синхронизация (мьютексы). Вы можете рассмотреть вопрос об упаковке этого типа для обработки этого внешнего кода клиента. –