![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
xTr1m |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 692 Регистрация: 9.2.2005 Где: Москва Репутация: 1 Всего: 1 |
Доброго времени суток. У меня есть алгоритм, в нем три шага. Первые два могут выполняться независимо, тритий должен дождаться первых двух. Сейчас это все выполняется линейно, то есть сначала первый, потом второй и третий. Среда разработки MSVS 2008. Слышал, что в 2010 можно разбивать на задачи и выполнять параллельно на нескольких процессорах одновременно, но студию я сменить не могу. Насколько я понимаю, если просто создам два потока (на первый и второй шаг), то будет загружаться все равно только один процессор. Может есть что-нибудь в boost'е, к примеру. Очень буду благодарен за помощь.
|
|||
|
||||
KaraKum |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 640 Регистрация: 3.12.2007 Репутация: 1 Всего: 1 |
Достаточно разбить на потоки. Параллельное выполнение каких-либо задач в прерогативу студии разработки не входит. Библиотек по потокам много, но лучше использовать boost thread. Любая реализация потоков имеет функцию .join(), позволяющую дождаться завершения выполнения потока - какая бы библиотека не была в результате код будет выглядеть примерно так:
Это сообщение отредактировал(а) KaraKum - 21.3.2011, 18:33 |
|||
|
||||
xTr1m |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 692 Регистрация: 9.2.2005 Где: Москва Репутация: 1 Всего: 1 |
Спасибо. Я думал что вынесение в поток не распределит нагрузку между процессорами, ошибался. Что же буду делать через потоки.
Это сообщение отредактировал(а) xTr1m - 21.3.2011, 18:51 |
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
Этим занимается операционная система. Если на данный момент потоков, требующих внимания процессора не больше самих процессоров, то каждый поток будет выполняться отдельным процессором. В основном, если система ничем другим не занята, то два потока будут выполняться параллельно на компьютере с двумя процессорами. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |