параллельный доступ к массиву

 
0
 
C++
ava
mrgloom | 19.02.2013, 11:05
допустим есть у меня вектор или массив char' ов  - изображение и захотел я его обрабатывать параллельно в несколько потоков.

какие существуют правила доступа? можно читать\писать в несколько потоков, только не в пересекающиеся области памяти?
Ответы (5)
ava
baldina | 19.02.2013, 11:27 #
можно и в пересекающиеся. только надо учитывать, что потоков несколько, и в момент чтения/записи доступ к этому элементу могут осуществлять другие потоки. для упорядочения доступа к данным используется синхронизация потоков.
если каждый поток обрабатывает свою часть массива, доступ синхронизировать не нужно.




ava
mrgloom | 19.02.2013, 12:18 #
а если только чтение? то синхронизировать не надо?

существуют ли какие либо методы чтобы отследить, что происходит запись в память предназначенную другому треду?
или как то ограничить доступную память в самом треде?

теоретически ведь возможно, что время на синхронизацию будет большим, что убьёт все пряники от многопоточности? как замерять это время?

ava
Alexeis | 19.02.2013, 12:39 #
Если есть цепочка чтение -> обработка -> запись , пусть даже запись будет синхронизироваться, то все равно могут быть траблы. Если только чтение и потом никакой записи в этот же массив, то синхронизация не нужна.
ava
baldina | 19.02.2013, 14:57 #
Цитата (mrgloom @  19.2.2013,  12:18 findReferencedText)
теоретически ведь возможно, что время на синхронизацию будет большим, что убьёт все пряники от многопоточности?

угу. и практически тоже. накладные расходы многопоточных приложений всегда больше однопоточных.

Добавлено позднее:
есть и другие грабли, например особенности работы процессорного кэша
ava
volatile | 19.02.2013, 17:50 #
И вообще, написать многопоточное приложение, где многопоточность не ради галочки, а реально целесообразна, - не фунт изюма.
На малых по времени между синхронизациями задачах (и даже не очень малых), почти всегда накладные расходы перекрывают выигрыш.
Зарегистрируйтесь или войдите, чтобы написать.
Фирма дня
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Участники
advanced
Отправить