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

Реализовать пул потоков, в который можно помещать функцию - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Ввести строку. Выдать все слова, которые имеют длину больше, чем длина последнего слова строки http://www.cyberforum.ru/cpp-beginners/thread1122451.html
ввести строку. на печать, выдать все слова, которые имеют длину больше, чем длина последнего слова строки.
C++ Перемножение матриц, исправить код первая матрица int M1(int **arr1) { int i,j; for(i=0;i<m;i++) { for(j=0;j<n;j++) { arr1=random(1,10); } } http://www.cyberforum.ru/cpp-beginners/thread1122445.html
Умножение матриц разных классов C++
Допустим есть 2 класса, описывающих матрицы А и Б, как произвести с ними арифметические операции(сложение, умножение)?
C++ Посчитать количество локальных минимумов заданной матрицы
Элемент матрицы называется локальным минимумом, если он строго меньше, всех имеющихся у него соседей. посчитать колличество локальных минимумов заданной матрицы размером 10Х10 Не понимаю, почему он не считает за локальный минимум правый нижний угол, вроде всё верно.. #include <stdafx.h> #include <iostream> #include <iomanip>
C++ Поиск в строке пар слов из которых одно слово инверсия другого http://www.cyberforum.ru/cpp-beginners/thread1122404.html
Нужно разделить строку на слова которые должны быть записаны в двухмерный массив, слова разделены пробелами. После чего каждое слово нужно сравнить с инверсией всех остальных слов, и посчитать количество таких пар. С программированием у меня туго, прошу решите эту задачу. Много болею и часто прогуливаю. Заранее благодарю.
C++ Вызов пользовательской функции есть задача на использование симплекс-метода. в ходе решения использую функцию void new_table(int nn, int x, int c, float **m3, float **m2) { int i,j,zz; for (i=0; i<nn;i++) { zz=0; for(j=0;j<nn;j++) { if ((i==x)&&(j==c)) подробнее

Показать сообщение отдельно
DiffEreD
1427 / 764 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
20.03.2014, 12:47     Реализовать пул потоков, в который можно помещать функцию
sergeu90, можно с имитировать пул с помощью std::async. Он будет самостоятельно запускать нужное количество требуемых потоков. И кода поменьше будет.
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
40
41
#include <iostream>
#include <functional>
#include <type_traits>
#include <vector>
#include <future>
 
struct thread_pool
{
    template<typename FunctionType>
    std::future<typename std::result_of<FunctionType()>::type> submit(FunctionType f)
    {
        return std::async(f);
    }
};
 
 
unsigned long long fib(unsigned i) { return i < 3 ? 1 : fib(i - 1) + fib(i - 2); }
 
void void_funct() { std::cout << "Hello from void_funct.\n"; }
int int_funct() { return 100; }
double double_funct(int val1, int val2) { return 100.0 / val1 + val2; }
 
void main()
{
    thread_pool pool;
 
    auto res_from_int_funct =    pool.submit(int_funct);
    auto res_from_double_funct = pool.submit(std::bind(double_funct, 2, 3));
    std::cout << "First res:  " << res_from_int_funct.get()
            << "\nSecond res: " << res_from_double_funct.get() << "\n";
 
    std::cout << "\n\nSome hard work:...\n";
    using res_t = std::future<unsigned long long>;
    std::vector<res_t> futures;
    for (int i = 0; i < 8; ++i)
        futures.emplace_back(pool.submit(std::bind(fib, 35 + i)));
    for (auto& f : futures)
        std::cout << f.get() << "\n";
 
    system("PAUSE");
}
Работает на Visual Studio 2013.
 
Текущее время: 02:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru