Задался вопросом, а зачем в данном примере io_service
в разных потоках...
#include <boost/asio/io_service.hpp>
#include <boost/asio/steady_timer.hpp>
#include <chrono>
#include <thread>
#include <iostream>
using namespace boost::asio;
int main()
{
io_service ioservice;
steady_timer timer1{ioservice, std::chrono::seconds{3}};
timer1.async_wait([](const boost::system::error_code &ec)
{ std::cout << "3 sec\n"; });
steady_timer timer2{ioservice, std::chrono::seconds{3}};
timer2.async_wait([](const boost::system::error_code &ec)
{ std::cout << "3 sec\n"; });
std::thread thread1{[&ioservice](){ ioservice.run(); }};
std::thread thread2{[&ioservice](){ ioservice.run(); }};
thread1.join();
thread2.join();
}
Попробовал просто io_service.run()
и один раз в главном потоке - и так же все асинхронно вывелось... в чем профит?
Приципильно разницы нет, т.е. один из ioservice.run(); вы можете вызвать в отдельном потоке, а второй в главном. Но тогда вы блокируете главный поток. Если же оба ioservice.run(); вы вызываете в отдельных потоках, то в главном вы можете производить какую-то работу, а потом вставить на ожидание завершения.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
и так, есть таблица, содержащая, например, логи(не обязательно их)в таблице больше 50000 значений в формате www
Есть CУБД MySQLВ текстовом поле лежит следующее значение: