В настоящее время я пытаюсь представить двумерный массив, используя tbb :: concurrent_vector
. К этому двумерному массиву будет обращаться множество разных потоков, и поэтому я хочу, чтобы он обрабатывал параллельный доступ как можно более эффективно.
Я придумал 2 решения:
Используйте tbb :: concurrent_vector
, чтобы сохранить его.
Хранить все в tbb :: concurrent_vector
и обращаться к элементам с x * width + y
Я предпочел второй, потому что не хочу блокировать целая строка для доступа к одному элементу (поскольку я предполагаю, что для доступа к элементу array [x] [y]
] реализация tbb заблокирует x
-ю строку, а затем ] y
-й элемент).
Я хотел бы знать, какое решение вам кажется лучше.