永发信息网

boost:asio 在哪个线程回调

答案:1  悬赏:80  手机版
解决时间 2021-02-14 14:15
boost:asio 在哪个线程回调
最佳答案
这里我们将每秒回调一次,来演示如何回调函数参数的含义
  #include
  #include
  #include
  #include
  首先,调整一下timer的持续时间,开始一个异步等待.显示,回调函数需要访问timer来实现周期运行,所以我们再介绍两个新参数
  指向timer的指针
  一个int*来指向计数器
  void print(const asio::error& ,
  asio::deadline_timer* t, int* count)
  {
  我们打算让这个函数运行6个周期,然而你会发现这里没有显式的方法来终止io_service.不过,回顾上一节,你会发现当 asio::io_service::run()会在所有任务完成时终止.这样我们当计算器的值达到5时(0为第一次运行的值),不再开启一个新的异步等待就可以了.
  if (*count < 5)
  {
  std::cout << *count << " ";
  ++(*count);
  ...
  然后,我们推迟的timer的终止时间.通过在原先的终止时间上增加延时,我们可以确保timer不会在处理回调函数所需时间内的到期.
  (原文:By calculating the new expiry time relative to the old, we can ensure that the timer does not drift away from the whole-second mark due to any delays in processing the handler.)
  t->expires_at(t->expires_at() + boost::posix_time::seconds(1));
  然后我们开始一个新的同步等待.如您所见,我们用把print和他的多个参数用boost::bind函数合成一个的形为void(const asio::error&)回调函数(准确的说是function object).
  在这个例子中, boost::bind的asio::placeholders::error参数是为了给回调函数传入一个error对象.当进行一个异步操作,开始 boost::bind时,你需要使用它来匹配回调函数的参数表.下一节中你会学到回调函数不需要error参数时可以省略它.
  t->async_wait(boost::bind(print,
  asio::placeholders::error, t, count));
  }
  }
  int main()
  {
  asio::io_service io;
  int count = 0;
  asio::deadline_timer t(io, boost::posix_time::seconds(1));
  和上面一样,我们再一次使用了绑定asio::deadline_timer::async_wait()
  t.async_wait(boost::bind(print,
  asio::placeholders::error, &t, &count));
  io.run();
  在结尾,我们打印出的最后一次没有设置timer的调用的count的值
  std::cout << "Final count is " << count << " ";
  return 0;
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
兰溪市城市管理行政执法局地址在哪,我要去那
全能五金水电地址在什么地方,想过去办事
骑士队穿17号球衣的是谁?NBA穿42号球衣的都
燃气热水器水箱10升左右,一般铜管直径是多大
SOY FOOD韩国小吃在什么地方啊,我要过去处理
兰溪市城市管理行政执法大队地址有知道的么?
为什么笔记本玩WOW没有法术效果设置!
氨基糖苷类抗菌药常见的不良反应,不包括A.耳
玉梅佘太粮行我想知道这个在什么地方
违反公安部61号令相关规定,依法应当给予行政
汽车缸体材料铝和铁哪个好
一千多块钱一瓶的红酒一般都是那些
兰溪市城市管理行政执法局香溪中队地址在哪,
癌症患者能吃阿胶吗
北京慧凡教育在哪里啊,我有事要去这个地方
推荐资讯
七彩虹幼儿园(邯郸鸡泽)地址有知道的么?有点
我想在淘宝网上卖东西,具体的流程怎么做?
想把电脑的软件下载到其它盘,不想到c盘,怎
在久之,复辞疾赐告,遂不复起中,赐告之义为
公主岭农村合作银行育林分理处地址有知道的么
现在国产的VR眼镜哪个牌子好用啊,另外谁知道
交警大队的副中队长是什么级别?
振鸿商行地址在哪,我要去那里办事
求qq飞车有一个地图是城市老街的背景音乐
把载、栽、裁、戴、判、爱、种、装、组成四个
湖南省地质测试研究院我想知道这个在什么地方
极速退款成功后,卖家到货拒绝退款,淘宝要求
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?