![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
mrgloom |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
внутри task_execute vec изменяется а по выходу все возвращается в прежнее положение как до вызова тредов. почему так происходит? я же передаю по ссылке. |
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
||||
|
||||
mrgloom |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
а когда используется ref не производится копирование?
и еще такое ощущение что несколько тредов все равно не могут одновременно читать\записывать в вектор. потому, что я пробовал с указателем void task_execute(vector<vector<point>>* vec) были ошибки. |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
||||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
||||
|
||||
mrgloom |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
ну вот я их как раз не делал.
ну если у меня гигантский вектор как это скажется на производительности? т.е. этот wrapper константный что у большого вектора что у маленького и никакой разницы? ну вообщем пока проблему решил путем разделения входного вектора задач на N векторов( каждому треду по вектору) и так же каждому треду отдельно передается и выходной вектор потом после обработки это все сливается в общий. вообщем не очень красивое решение по памяти. и ко всем переменным обращаюсь теперь через указатель, или надо использовать ref? |
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
Wrapper содержит ссылку на твой вектор и его размер не зависит от размера твоего вектора. ну а чего ты тогда хочешь? Если каждый поток работает с отдельными данными, то в чем тогда проблема? Разделять вектор физически не надо, передавай тот же вектор и передавай индексы первого и последнего элемента, которые поток должен обрабатывать. Это сообщение отредактировал(а) azesmcar - 22.9.2011, 09:34 |
|||
|
||||
mrgloom |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
ну ок. с входным вектором тогда понятно. есть ли какие то готовые решения которые ведут себя по разному в зависимости от того работают потоки с взаимонезависимыми частями (скажем вектора) или с пересекающимися? |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |