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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
soican
49 / 23 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
#1

std threading library взамен boost threading library - C++

06.07.2013, 22:40. Просмотров 620. Ответов 7
Метки нет (Все метки)

изучаю распараллеливание на примере "примера" с http://www.linux.org.ru/forum/development/4152264 ,
но там с использованием boost. Так вот хотел было начать задавать умные вопросы, НО! :
std::thread_group is not member of std и приехали, ступор. на что мне заменить std::thread_group
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 <mutex>
#include <vector>
int a(int x)
{return x*x;}
int next_i(int n, int & i, std::mutex & m)
{   std::unique_lock<std::mutex> lock(m);
    if(i >= n)  return -1;
    return i++;
}
void worker(std::vector<double> & mass_a, std::function<int()> f)
{   for(;;)
    {   int cur_i = f();
        if(cur_i < 0)
            break;
        mass_a[cur_i] = a(cur_i);
    }
}
int main()
{   int i = 0;
    std::mutex m;
    std::vector<double> mass_a;
    mass_a.resize(1000);
    std::function<int()> f = std::bind(&next_i, mass_a.size(), std::ref(i), std::ref(m));
    std::thread_group threads;
    for (int i=0; i<std::thread::hardware_concurrency(); ++i)
        threads.create_thread(std::bind(&worker, std::ref(mass_a), f));
    threads.join_all();
    return 0;
}
}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.07.2013, 22:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос std threading library взамен boost threading library (C++):

Graphical library - C++
Всем привет! Подскажите пожалуйста графическую библиотеку. (Linux-&gt; C++ -&gt; Code Blocks). Желательно схожее с Visual Studio, где есть...

Static Library - C++
Привет всем! Нужно проанализировать (понять, что она делает) статичную библиотеку, собранную под Linux (.a), используя Windows. Как это...

Runtime Library - C++
Здравствуйте,писал код при компиляции проблема.Скажите проблема в коде или в вижуалкой что-то

Реализация класса Library - C++
Задание: 1) Реализуйте класс Book, который является частью программного обеспечения библиотеки. Класс Book должен иметь члены для...

Mono library load - C++
Доброго времени суток! Можете подсказать, каким образом, кроме COM, подгрузить библиотеку на C#/Mono и вызвать из неё метод?

Runtime Library = Multi-Threaded (/MT) - C++
Продолжение темы: Ответ: Вот что оказалось на практике:

7
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
06.07.2013, 22:42 #2
std::vector<std::thread> vec;
0
soican
49 / 23 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
06.07.2013, 22:56  [ТС] #3
Цитата Сообщение от Jupiter Посмотреть сообщение
std::vector<std::thread> vec;
но vec.create_thread я не могу тогда поставить, это неправильно
0
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
06.07.2013, 23:00 #4

Не по теме:

Цитата Сообщение от soican Посмотреть сообщение
но vec.create_thread я не могу тогда поставить, это неправильно
да ладно, не может быть


vec.push_back(std::thread(...));
0
gray_fox
What a waste!
1521 / 1226 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
06.07.2013, 23:03 #5
Цитата Сообщение от soican Посмотреть сообщение
но vec.create_thread я не могу тогда поставить
emplace_back
0
soican
49 / 23 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
06.07.2013, 23:20  [ТС] #6
Цитата Сообщение от Jupiter Посмотреть сообщение
да ладно, не может быть

А что прикажете с vec.join_all делать?
0
gray_fox
What a waste!
1521 / 1226 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
06.07.2013, 23:25 #7
Цитата Сообщение от soican Посмотреть сообщение
А что прикажете с vec.join_all делать?
join в цикле, нет?
0
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
06.07.2013, 23:28 #8
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
о боги, так трудно включить моск, погуглить, посмотреть исходники в конце концов

C++
1
2
3
4
5
6
7
8
9
void thread_group::join_all()
{
    mutex::scoped_lock scoped_lock(m_mutex);
    for (std::list<thread*>::iterator it = m_threads.begin();
         it != m_threads.end(); ++it)
    {
        (*it)->join();
    }
}
3
06.07.2013, 23:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.07.2013, 23:28
Привет! Вот еще темы с ответами:

Makefile dynamic library creation error - C++
Добрый день. Создал makefile со следующим содержанием: # Project PROJECT_NAME=StarXml EXECUTABLE=StarXml # Dirs TARGET_DIR=bin...

устраните неполадки Microsoft Visual c++ runtime library - C++
CodeBlocks&quot; и C++ Builder 6 не работают. Выводит : this application has requested the runtime to terminate it in unusual way.please...

Ошибка Do not compile Asio library source with BOOST_ASIO_HEADER_ONLY defined - C++
Установил boost как написано тут: http://www.boost.org/doc/libs/1_61_0/more/getting_started/windows.html#build-from-the-visual-studio-ide в...

This file requires compiler and library support for the upcoming ISO C++ standard, C++0x - C++
Не подскажите что за ошибка: #error This file requires compiler and library support for the upcoming \ ISO C++ standard, C++0x. This...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru