Форум программистов, компьютерный форум, киберфорум
Наши страницы

Создание параллельных задач - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Оптимизация обработки массивов http://www.cyberforum.ru/cpp-beginners/thread776600.html
Есть 12 числовых массивов (a,b,d,e,f,g,h,k,m,n,p,r) разной длины, их длина кратна 5 и заранее известна. Необходимо создать массив (abdefghkmnpr) состоящий из перебора этих массивов. Алгоритм...
C++ Cтруктура: расчет количества библиотек на 1000 жителей. Составить программу, в которой описывается структура из полей: Город, Количество жителей, Количество библиотек. Организовать ввод структурных переменных, вывод каждой структуры на экран и расчет... http://www.cyberforum.ru/cpp-beginners/thread776581.html
Реализация работы с динамическими структурами C++
Составьте программу, которая создает стек из произвольного количества элементов. Информационная часть динамического элемента должна состоять из двух целых чисел. Организуйте обработку каждого...
Структура: Очередь C++
Составьте программу, которая создает очередь из произвольного количества элементов. Информационная часть динамического элемента должна состоять из двух целых чисел. Организуйте обработку каждого...
C++ Static поля класса http://www.cyberforum.ru/cpp-beginners/thread776562.html
объясните нубу, вот имею я такой код на С# class WebResponse { public static string GET(string Url, string Data) { string Out = sr.ReadToEnd(); ...
C++ Составить программу, в которой описывается структура из полей: Фамилия, Номер телефона, Год рождения Составить программу, в которой описывается структура из полей: Фамилия, Номер телефона, Год рождения. Организовать ввод двух структурных переменных, вывод каждой структуры на экран и вывести на... подробнее

Показать сообщение отдельно
DiffEreD
1431 / 768 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2

Создание параллельных задач - C++

01.02.2013, 01:37. Просмотров 2908. Ответов 11
Метки (Все метки)

Начал потихоньку изучать параллельное программирование. И вот, застрял на такой реальной задачи - есть функция которую требуется вычислить, допустим 20 раз параллельно с разными аргументами, результаты вывести на экран. Суть создания потоков я понял, передача в future, но никак не могу все это слепить вместе, понять как определять, что потоки уже завершились и заново перезапускать новые с новыми данными для вычисления. Кому не лень, объясните как правильно сделать. Короче, вот пока все что мне в голову пришло:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <thread>
#include <chrono>
#include <iostream>
#include <future>
#include <memory>
#include <vector>
 
auto fib = [](const unsigned n)
{
    if (n<3) return 1;
    else return fib(n-1) + fib(n-2);
};
 
int main()
{
    std::vector<std::future<int> > vf(std::thread::hardware_concurrency());
    unsigned i = 40;  //аргумент для лямбды, надо вычислить от 40 до 60
    for (auto it = vf.begin(), end = vf.end(); it!=end; ++it)
    {
        *it = std::async(std::launch::async, fib, i++); //создаются у меня тут два потока и все
         ....
    }
    /*unsigned p = 1;
    for (auto it = vf.begin(), end = vf.end(); it!=end; ++it)
    {
        (*it).get();
        std::cout<<"thread "<<p++<<" passed\n";
    }*/
    system("pause");
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru