Форум программистов, компьютерный форум CyberForum.ru

Создание параллельных задач - 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) состоящий из перебора этих массивов. Алгоритм программы такой: 1 объявляем новый массив(ab) 2 сравниваем два первых массива(a и b) сравнение происходит так: берем 5 элементов массива (b) и по одному сравниваем с 5 элементами массива (a) если в...
C++ Cтруктура: расчет количества библиотек на 1000 жителей. Составить программу, в которой описывается структура из полей: Город, Количество жителей, Количество библиотек. Организовать ввод структурных переменных, вывод каждой структуры на экран и расчет количества библиотек на 1000 жителей. Кол-во библиотек на 1000 жителей = Количество библиотек / Количество жителей / 1000. #include <iostream> #include <cstring> #include <windows.h> #include... 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(); return Out; } } и я просто буду обращаться к этой функции WebResponse.GET(...);
C++ Составить программу, в которой описывается структура из полей: Фамилия, Номер телефона, Год рождения Составить программу, в которой описывается структура из полей: Фамилия, Номер телефона, Год рождения. Организовать ввод двух структурных переменных, вывод каждой структуры на экран и вывести на экран фамилию человека, номер телефона введен с клавиатуры (если такого человека нет, вывести сообщение об этом). подробнее

Показать сообщение отдельно
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
01.02.2013, 12:31  [ТС]     Создание параллельных задач
Цитата Сообщение от Shepard90 Посмотреть сообщение
что вам мешает объявить массив из 20 потоков(thread) и в цикле запустить их, передав каждому функцию и соответствующий параметр
Да ничто не мешает, просто я не знаю как потом вытащить из этих потоков возвращаемые значения. Вот еще сделал набросок но бросается исключение:
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
32
33
34
35
36
37
38
39
#include <thread>
#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()
{
    auto myPromise = std::make_shared<std::promise<int>>();
    std::future<int> waiter = myPromise->get_future();
    auto fibadapt = [myPromise](const unsigned val)
    {
        myPromise->set_value(fib(val));
    };
    std::vector<std::thread> vt(std::thread::hardware_concurrency());
    unsigned num = 20;
    auto it = vt.begin(), end = vt.end();
    while(num<30)
    {
        for (it = vt.begin(); it!=end; ++it)
        {
            *it = std::move(std::thread(fibadapt, num));
            (*it).detach();
            ++num;
        }
        for (it = vt.begin(); it!=end; ++it)
        {
            std::cout<<"Result of "<<num<<" = "<<waiter.get()<<"\n";  // как привязать waiter к определенному потоку?
        }
    }
    system("pause");
    return 0;
}
 
Текущее время: 07:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru