Как использовать boost :: asio :: io_service для распределения заданий между потоками C ++ 11

0

Мне нужно выполнить в многоядерной архитектуре огромное количество относительно коротких задач. Для этого я хотел использовать пул потоков фиксированного размера и некоторую надежную реализацию исполнителя.

Я читал об boost :: asio и io_service в этом сообщении. Как создать пул потоков, используя boost в C++? но в нем используются потоки повышения, в то время как во многих местах мой код использует модификатор C++ 11 thread_local для локальных переменных (по соображениям производительности), поэтому я полагаю, что я вынужден использовать C++ 11 потоков.

Совместима ли реализация ускоренного потока с переменными C++ 11 thread_local?

Можно ли просто использовать метод io_service :: run с C++ 11 потоками, вместо этого с boost :: thread?

  • 0
    Местные жители потока - только это. Нить местных жителей. Boost не нуждается в их поддержке, если их реализация верна.
Теги:
multithreading
c++11
boost
boost-thread

1 ответ

3
Лучший ответ

Можно ли просто использовать метод io_service :: run с потоками С++ 11, вместо этого с boost :: thread?

Да, я использую std::thread с boost::asio и он отлично работает. Я также использую std::bind вместо boost::bind. Вы можете найти пример здесь

Совместима ли реализация boost thread с переменными thread_local С++ 11?

Я не знаю об этом, но это должно быть неуместно, если вы используете std::thread

  • 0
    Я только что проверил, и это действительно работает, хотя у меня были некоторые злые моменты, когда я понял, как работает io_service :: stop ().

Ещё вопросы

Сообщество Overcoder
Наверх
Меню