![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| mrgloom |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
допустим есть у меня вектор или массив char' ов - изображение и захотел я его обрабатывать параллельно в несколько потоков.
какие существуют правила доступа? можно читать\писать в несколько потоков, только не в пересекающиеся области памяти? |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 32 Всего: 101 |
можно и в пересекающиеся. только надо учитывать, что потоков несколько, и в момент чтения/записи доступ к этому элементу могут осуществлять другие потоки. для упорядочения доступа к данным используется синхронизация потоков.
если каждый поток обрабатывает свою часть массива, доступ синхронизировать не нужно. |
|||
|
||||
| mrgloom |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
а если только чтение? то синхронизировать не надо?
существуют ли какие либо методы чтобы отследить, что происходит запись в память предназначенную другому треду? или как то ограничить доступную память в самом треде? теоретически ведь возможно, что время на синхронизацию будет большим, что убьёт все пряники от многопоточности? как замерять это время? |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 12 Всего: 459 |
Если есть цепочка чтение -> обработка -> запись , пусть даже запись будет синхронизироваться, то все равно могут быть траблы. Если только чтение и потом никакой записи в этот же массив, то синхронизация не нужна.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 32 Всего: 101 |
угу. и практически тоже. накладные расходы многопоточных приложений всегда больше однопоточных. Добавлено через 1 минуту и 32 секунды есть и другие грабли, например особенности работы процессорного кэша |
|||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
И вообще, написать многопоточное приложение, где многопоточность не ради галочки, а реально целесообразна, - не фунт изюма.
На малых по времени между синхронизациями задачах (и даже не очень малых), почти всегда накладные расходы перекрывают выигрыш. |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |