C++ Boost::Windows上的Asio不';不能异步工作
我正在学习一本关于Boost的书,现在我在Asio章节C++ Boost::Windows上的Asio不';不能异步工作,c++,linux,windows,boost,C++,Linux,Windows,Boost,我正在学习一本关于Boost的书,现在我在Asio章节 https://theboostcpplibraries.com/boost.asio-scalability 我发现了一些异步定时器的简单示例。当我在我的Windows笔记本电脑上发现这些示例的工作方式与作者描述的不同时,我感到非常惊讶 下面是示例代码(与本书相比略有修改,我指的是计时器的值): #包括 #包括 #包括 #包括 #包括 使用名称空间boost::asio; int main() { io_服务ioservice1; io
https://theboostcpplibraries.com/boost.asio-scalability
我发现了一些异步定时器的简单示例。当我在我的Windows笔记本电脑上发现这些示例的工作方式与作者描述的不同时,我感到非常惊讶
下面是示例代码(与本书相比略有修改,我指的是计时器的值):
#包括
#包括
#包括
#包括
#包括
使用名称空间boost::asio;
int main()
{
io_服务ioservice1;
io_服务IOS服务2;
稳定计时器timer1{ioservice 1,std::chrono::seconds{3};
timer1.async_wait([](const boost::system::error_code&ec)
{std::coutcout
默认情况下不会立即刷新其输出。添加cout
默认情况下不会立即刷新其输出。添加您是对的!谢谢。问题在于刷新,它在Windows和Linux上的工作方式不同。当我将std::endl添加到Windows程序时,它开始显示打印输出3秒后在控制台上。Asio一切正常。你是对的!谢谢。问题在于刷新,它在Windows和Linux上的工作方式不同。当我将std::endl添加到Windows程序时,它在3秒后开始在控制台上显示打印输出。所以Asio一切正常。
#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 ioservice1;
io_service ioservice2;
steady_timer timer1{ioservice1, std::chrono::seconds{3}};
timer1.async_wait([](const boost::system::error_code &ec)
{ std::cout << "3 sec\n"; });
steady_timer timer2{ioservice2, std::chrono::seconds{9}};
timer2.async_wait([](const boost::system::error_code &ec)
{ std::cout << "9 sec\n"; });
std::thread thread1{[&ioservice1](){ ioservice1.run(); }};
std::thread thread2{[&ioservice2](){ ioservice2.run(); }};
thread1.join();
thread2.join();
}