![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| mrgloom |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
допустим есть участок кода
внутрь самой функции some_func нет желания лезть, а хочется распараллелить по данным(хоть и понятно, что это может быть не самый удачный метод т.к. накладные расходы на двойную инициализацию и т.д.), т.е. например поделить картинку на N частей где N кол-во процессоров. как это сделать самым простым способом?(т.к. в многопоточном программирования я вообще не разбираюсь) вообще замечательно если можно написать "обертку" типа такого do_in_paralell(some_func(Image),get_num_of_cores); ну или возможно не в таком виде если нельзя передавать функцию как аргумет, а //some code //int N=get_num_cores; //split image in N parts //thread1 some_func(image_part_1); ... //threadN some_func(image_part_N) //merge images //some code Это сообщение отредактировал(а) mrgloom - 19.8.2011, 12:29 |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
если твоя some_func() способна работать с неполной картинкой корректно, тогда делишь картинку на N частей и передаешь каждую часть в N функций.
|
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 17 Всего: 110 |
ну и ещё не помешало бы как-то узнать, позволяет ли вообще some_func параллельный вызов
а то, например, в старом коде нередко можно встретить всякие глобальные переменные, которые могут принести много проблем при многопоточной работе... -------------------- qqq |
|||
|
||||
| mrgloom |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
а как передавать изображение из начального копировать куски в более мелкие и так передавать а потом после обработки склеивать? или можно как то ссылкой? и еще я могу собрать только boost thread? а остальным не пользоваться? |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
разбей на куски, и в поток передавай ссылки на куски. после завершения "tg.join_all();" склеивай куски. никогда не задавался этим вопросом. |
|||
|
||||
| Леопольд |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 10 Всего: 13 |
Это сообщение отредактировал(а) Леопольд - 20.8.2011, 16:06 -------------------- вопросов больше чем ответов |
||||
|
|||||
| mrgloom |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
не понял ваш приведенный текст. но в принципе вопрос решен, т.к. для boost thread нужен только 1 файл libboost_thread-vc90-mt-gd-1_47.lib я думал что весь буст пихается в 1 либ файл. на сайте еще прочитал, что
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |