Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Boost::Windows上的Asio不';不能异步工作_C++_Linux_Windows_Boost - Fatal编程技术网

C++ Boost::Windows上的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

我正在学习一本关于Boost的书,现在我在Asio章节

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::cout
cout
默认情况下不会立即刷新其输出。添加
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();
}