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

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

Восстановить пароль Регистрация
 
soican
49 / 23 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
06.07.2013, 22:40     std threading library взамен boost threading library #1
изучаю распараллеливание на примере "примера" с 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;
}
}
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
06.07.2013, 22:42     std threading library взамен boost threading library #2
std::vector<std::thread> vec;
soican
49 / 23 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
06.07.2013, 22:56  [ТС]     std threading library взамен boost threading library #3
Цитата Сообщение от Jupiter Посмотреть сообщение
std::vector<std::thread> vec;
но vec.create_thread я не могу тогда поставить, это неправильно
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
06.07.2013, 23:00     std threading library взамен boost threading library #4

Не по теме:

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


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

А что прикажете с vec.join_all делать?
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
06.07.2013, 23:25     std threading library взамен boost threading library #7
Цитата Сообщение от soican Посмотреть сообщение
А что прикажете с vec.join_all делать?
join в цикле, нет?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.07.2013, 23:28     std threading library взамен boost threading library
Еще ссылки по теме:

C++ Как пользоваться проектом "Win32 Static Library"?
Static Library C++
C++ Makefile dynamic library creation error

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

Или воспользуйтесь поиском по форуму:
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
06.07.2013, 23:28     std threading library взамен boost threading library #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();
    }
}
Yandex
Объявления
06.07.2013, 23:28     std threading library взамен boost threading library
Ответ Создать тему
Опции темы

Текущее время: 17:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru