Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Параллельное выполнение задча 
V
    Опции темы
xTr1m
Дата 21.3.2011, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 692
Регистрация: 9.2.2005
Где: Москва

Репутация: 1
Всего: 1



Доброго времени суток. У меня есть алгоритм, в нем три шага. Первые два могут выполняться независимо, тритий должен дождаться первых двух. Сейчас это все выполняется линейно, то есть сначала первый, потом второй и третий. Среда разработки MSVS 2008. Слышал, что в 2010 можно разбивать на задачи и выполнять параллельно на нескольких процессорах одновременно, но студию я сменить не могу. Насколько я понимаю, если просто создам два потока (на первый и второй шаг), то будет загружаться все равно только один процессор. Может есть что-нибудь в boost'е, к примеру. Очень буду благодарен за помощь.
PM MAIL WWW ICQ   Вверх
KaraKum
Дата 21.3.2011, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 640
Регистрация: 3.12.2007

Репутация: 1
Всего: 1



Достаточно разбить на потоки. Параллельное выполнение каких-либо задач в прерогативу студии разработки не входит. Библиотек по потокам много, но лучше использовать boost thread. Любая реализация потоков имеет функцию .join(), позволяющую дождаться завершения выполнения потока - какая бы библиотека не была в результате код будет выглядеть примерно так:

Код

//задачи в виде функций:
void firstTask() {}
void secondTask() {}
void thirdTask() {}

int main()
{
     //запускаем первую задачу:
     AnyThreadType firstThread(firstTask);
     //...вторую:
     AnyThreadType secondThread(secondTask);
     
     //ждём завершения выполнения обеих задач:
     firstThread.join();
     secondThread.join();
     
     //ну и последняя задача уже в основном потоке:
     thirdTask();
}


Это сообщение отредактировал(а) KaraKum - 21.3.2011, 18:33
PM MAIL WWW   Вверх
xTr1m
Дата 21.3.2011, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 692
Регистрация: 9.2.2005
Где: Москва

Репутация: 1
Всего: 1



Спасибо. Я думал что вынесение в поток не распределит нагрузку между процессорами, ошибался. Что же буду делать через потоки.

Это сообщение отредактировал(а) xTr1m - 21.3.2011, 18:51
PM MAIL WWW ICQ   Вверх
azesmcar
Дата 21.3.2011, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Цитата(xTr1m @  21.3.2011,  18:50 Найти цитируемый пост)
Спасибо. Я думал что вынесение в поток не распределит нагрузку между процессорами, ошибался. Что же буду делать через потоки.

Этим занимается операционная система. Если на данный момент потоков, требующих внимания процессора не больше самих процессоров, то каждый поток будет выполняться отдельным процессором. В основном, если система ничем другим не занята, то два потока будут выполняться параллельно на компьютере с двумя процессорами. 
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0969 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.