Форум программистов, компьютерный форум, киберфорум
Boost C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/25: Рейтинг темы: голосов - 25, средняя оценка - 5.00
11 / 11 / 2
Регистрация: 20.05.2011
Сообщений: 71

Boost thread pool. Как остановить потоки?

31.07.2014, 12:02. Показов 4868. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет.

Реализовал thread pool с помощью boost::thread_group и boost::asio::io_service

C++
1
2
3
4
5
6
7
8
9
10
11
    for (unsigned int i = 0; i < threadsCount_; ++i)
    {
        threadPool_.create_thread(boost::bind(&boost::asio::io_service::run, &ioService_));
    }
 
    for (unsigned int blockId = 0 ; blockId < countOfCryptedBlocks_; ++blockId)
    {
        ioService_.post(boost::bind(PERBlackBerry10Decrypter::DecryptMultithreading, this, blockId));
    }
    ioService_.stop();
    threadPool_.join_all();
Не подскажете как бы мне прервать всю эту работу?
Удалить все задачи нельзя, просто стопануть поток тоже не получается.
Есть какое-то решение на это все?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.07.2014, 12:02
Ответы с готовыми решениями:

boost::pool
Начинаю изучать boost, понравилась идея пула объектов, решил потестить, ожидая существенное повышение производительности операций с...

Thread Pool
Что значити пул ? В моем пониманий этом просто массив , тогда ThreadPool это массив потоков . верно ? POSIX определяет...

Как остановить thread.Sleep по клику
дело такое - опрашиваю ком порты. есть функция и класс, отвечающие за разные методы. приходится ставить thread.sleep() чтобы получить...

8
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
31.07.2014, 12:19
interrapt_all()
ф-ция кидает исключение

Добавлено через 1 минуту
Цитата Сообщение от aLarman Посмотреть сообщение
ф-ция кидает исключение
не уверен на 100% правда,
еще есть remove_thread(thread * thrd)
можно попробовать этим методом покиллять треды
0
11 / 11 / 2
Регистрация: 20.05.2011
Сообщений: 71
31.07.2014, 12:39  [ТС]
пробовал уже interrupt_all и ioService_.stop();
ничего не изменяется.

читал, чтобы interrupt_all заработало, нужно определить interrupt_points.
но не пойму как это сделать...
кто-то знает?

remove_thread(thread * thrd)
у меня thread_group, создаю потоки так:
threadPool_.create_thread(boost::bind(&b oost::asio::io_service::run, &ioService_));
не хотелось бы еще хранить указатели на потоки...
а иначе их не достать из thread_group;
0
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
31.07.2014, 13:32
Цитата Сообщение от razor_ua Посмотреть сообщение
читал, чтобы interrupt_all заработало, нужно определить interrupt_points.
но не пойму как это сделать...
кто-то знает?
в ф-ции которую запускаете в треде заюзать ф-цию
thread::join
thread::timed_join
thread::try_join_for
thread::try_join_until
condition_variable::wait
condition_variable::timed_wait
condition_variable::wait_for()
condition_variable::wait_until
condition_variable_any::wait
condition_variable_any::timed_wait
condition_variable_any::wait_for
condition_variable_any::wait_until
thread::sleep
this_thread::sleep_for
this_thread::sleep_until
this_thread::interruption_point

Добавлено через 1 минуту
что то стало не ясно, зачем вам тредпул? boost::asio:: без того асинхронная
1
11 / 11 / 2
Регистрация: 20.05.2011
Сообщений: 71
31.07.2014, 13:40  [ТС]
заюзать одну из ниже перечисленных или как?

я в нескольких потоках выполняю эту функцию
0
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
31.07.2014, 14:04
да, обычно используют boost::this_thread::interruption_point()
Цитата Сообщение от razor_ua Посмотреть сообщение
я в нескольких потоках выполняю эту функцию
а зачем?
1
11 / 11 / 2
Регистрация: 20.05.2011
Сообщений: 71
31.07.2014, 14:16  [ТС]
it works fine
спасибо!
ускоряю процесс
читаю файл, декриптую его и записываю в выходной файл.
блоки в криптованном файле независимы друг от друга (AES CTR),
поэтому, для лучшего перформенса, решено сделать в нескольких потоках
0
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
31.07.2014, 14:55
я не совсем конечно понимаю что происходит, но может собсно не ф-цию run в каждом процессе запускать а ф-цию криптования(декриптования)? после того как было сделано чтение, оно же все равно синхронное
0
 Аватар для DiffEreD
1458 / 795 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
31.07.2014, 17:43
asio::io_service::stop() может не работать так как вы это ожидали: boost::asio::io_service::stop()
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.07.2014, 17:43
Помогаю со студенческими работами здесь

Распараллеливание сортировки, thread pool
Здравствуйте! Значит задача в том, чтобы распараллелить шейкерную сортировку, при этом использовать пул потоков. Тут речь не идет об...

Internals of Tomcat Thread Pool
Hi, I am working on a project which tries to tune the Tomcat thread pool dynamically by looking at runtime characteristics in order to...

FATAL EXCEPTION: pool-1-thread-5
Подскажите, пожалуйста, когда возникает, и что обозначает ошибка FATAL EXCEPTION: pool-1-thread-5? Только не пишите, чтобы я код...

Как остановить потоки
for (int i = 0; i &lt; StrToInt(Form1-&gt;sSpinEdit1-&gt;Text); i++) {//в Edit1 количество потоков _beginthreadex( NULL, 0, &amp;nobonob,(void *)0,...

Как остановить потоки?
Хочу сделать такую задачу. Создать 36 потоков. Остановить каждый (wait() ). и затем по команде notifyAll(), одновремено разбудить все и тот...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru