【发布时间】:2015-11-19 02:15:31
【问题描述】:
http://theboostcpplibraries.com/boost.asio-scalability
我正在研究 boost.asio,它引起了我的好奇心。有源(例32.3)
#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();
}
虽然我省略了thread2,但屏幕输出是相等的。原始示例中的线程数为 2,此源中的线程数为 1。虽然线程数是1,但是timer1和timer2是同时开始和结束的。
我想知道为什么线程数必须是两个。
谢谢您的关心!
【问题讨论】:
标签: c++ multithreading boost boost-asio