• boost::asio


    1、同步:

      #include <iostream>
      #include <boost/asio.hpp>
      #include <boost/date_time/posix_time/posix_time.hpp>
      using std::cout;
      using std::endl;
      int main()
      {
          boost::asio::io_service io;
          boost::asio::deadline_timer t(io,boost::posix_time::seconds(5));
          t.wait();
          cout<<"Hello,world!"<<endl;
          return 0;
      }
    //过5秒输出 "Hello,world!"

    2、异步:相当于现在银行取票排队,时间到了会通知你。

      #include <iostream>
      #include <boost/asio.hpp>
      #include <boost/date_time/posix_time/posix_time.hpp>
      using std::cout;
      using std::endl;
      void print(const boost::system::error_code& error)
      {
          cout<<"Hello,world!"<<endl;
      }
      int main()
      {
          boost::asio::io_service io;
          boost::asio::deadline_timer t(io,boost::posix_time::seconds(5));
          t.async_wait(print);   //开始取票排队
    cout<<"Main fun..."<<endl; //主线程该干嘛干嘛

    io.run(); return 0; } //先输出 "Main fun..." 过5秒输出 "Hello,world!"

     3、回调函数的参数:

      #include <iostream>
      #include <boost/asio.hpp>
      #include <boost/bind.hpp>
      #include <boost/date_time/posix_time/posix_time.hpp>
    
      void print(const boost::system::error_code& error,boost::asio::deadline_timer* t,int* count)
      {
          if(*count < 5)
          {
              std::cout<< *count << "\n";
              ++(*count);
              t->expires_at(t->expires_at() + boost::posix_time::seconds(1));
              t->async_wait(boost::bind(print, boost::asio::placeholders::error, t, count));
          }
      }
    
      int main()
      {
          boost::asio::io_service io;
          int count = 0;
          boost::asio::deadline_timer t(io, boost::posix_time::seconds(1));
          t.async_wait(boost::bind(print,boost::asio::placeholders::error,&t,&count));
          io.run();
          std::cout<<"Final count is "<<count<<"\n";
          return 0;
      }
    //每隔一秒分别输出 0,1,2,3,4 最后输出 "Final count is 5"
  • 相关阅读:
    成功熬了四年还没死?一个IT屌丝创业者的深刻反思
    史氏语录
    WEB安全攻防学习内容
    从程序员的角度谈创业三年
    Windows2008 R2修改3389端口教程
    Win2008R2 zip格式mysql 安装与配置
    制作支持UEFI PC的Server2008 R2系统安装U盘
    郎科U208(主控 PS2251-50 HYNIX H27UCG8T2MYR)量产还原
    自用有线IP切换
    自动配置IP地址.bat
  • 原文地址:https://www.cnblogs.com/tianyajuanke/p/2681772.html
Copyright © 2020-2023  润新知