- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
这很好用:
class cStartSequence
{
void Tick()
{
// do something
}
void Wait()
{
myTimer->expires_from_now(
boost::posix_time::seconds( mySecs ) );
myTimer->async_wait(boost::bind(
&cStartSequence::Tick,
this
));
}
...
};
我希望能够取消计时器并让处理程序做一些不同的事情
void Tick( boost::system::error_code & ec )
{
if( ! ec )
// do something
else
// do something different
}
问题是如何修改对async_wait的调用?
这不编译
myTimer->async_wait(boost::bind(
&cStartSequence::Tick,
this,
boost::asio::placeholders::error
));
编译器投诉:
C:\Users\James\code\boost\v1_63\boost\bind\bind.hpp|319|error:
no match for call to
'(boost::_mfi::mf1<void, pinmed::wrs::cStartSequence, boost::system::error_code&>)
(pinmed::wrs::cStartSequence*&, const boost::system::error_code&)'
我尝试了 async_wait 参数的一些变体,但没有成功。
boost:asio v1.63,windows 10,code::blocks v16.01
最佳答案
您的 Tick 方法采用非常量引用。那不行(并且不满足处理程序要求)。使用任一个
void Tick(boost::system::error_code const& ec);
或者也许
void Tick(boost::system::error_code ec);
第一个是 Asio 作者的首选,因为有点晦涩难懂的原因(特定于库的优化 IIRC)
附言。要安全取消截止时间计时器,另请参阅
关于c++ - 具有取消处理的 async_wait 处理程序类成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47518509/
我正在浏览 boost::asio 示例。我在看 Example 4 令人困惑的是,这个例子中的 WaitHandler 有签名 void print (this) 但是 async_wait 调用需
我有一些 lua 脚本有一些长时间运行的任务,比如获取网页,所以我让它 yield 然后 C 代码句柄获取页面作业异步,所以线程可以自由地做其他工作,并在指定时间后返回检查查看获取页面作业是否已完成,
我们有一个方法需要经常调用来做一些计算(大约每秒 20 次)。这是一个同步调用。调用者需要尽快得到结果。但该计算过程有时花费的时间比预期的要长。我们不想改变其他任何东西。我们只是想添加一种监控机制来标
这很好用: class cStartSequence { void Tick() { // do something } void Wait() { myTimer->expires_f
在打开的套接字上时,我调用async_read()/read(),对等方随后关闭套接字-我将在处理程序中收到eof错误,但是对于async_wait()/wait()不会发生,该处理程序调用时没有错误
我正在创建一个程序,并且我正在尽可能地异步执行。 我需要运行一个程序,当这个程序完成时它调用一个回调函数。我找到了一个版本的 boost::process 并决定使用,但似乎有示例但在我下载的源代码中
我正在学习 Boost.Asio,但我对 boost::asio::deadline_timer async_wai 有疑问。这是来自 boost 主页的代码: // // timer.cpp //
在我的应用程序中,我发送和接收大量消息并充当服务器。与此同时,我检查客户端的 session 超时。当我在我的应用程序中不使用 async_wait 时,我的程序运行良好。但是当我使用 async_w
我执行一个简单的例子作为测试,我想在 5 秒后执行一个简单的操作。我正在使用带有 async_wait 的 boost::deadline_timer,但是 async_wait 不是异步等待...这
我正在学习 boost asio 文档。我遇到了这个 deadline_timer 示例。 #include #include #include #include /*This timer e
boost asio deadline_timer async_wait 函数采用以下形式的处理程序: void handler(const boost::system::error_code& er
当我在方法 SendMessageAgain 中调用 deadline_timer::async_wait 时,偶尔会抛出段错误。它可以通过以下两种方式之一发生;我在下面包含了回溯。它似乎是随机的,这
这个问题在这里已经有了答案: How to use boost bind with a member function (3 个答案) 关闭 7 年前。 在这个类中使用 boost 异步定时器的例子
这个问题的灵感来自 boost asio 文档 (link) 中关于异步定时器的教程。代码略作修改,效果更明显。 有一个相关的问题,Multiple async_wait from a boost A
为什么将 lambda 传递给 asyn_wait() 需要 auto ... 参数,而传递函数不需要这样的东西(即只需要函数名就可以),如 timer.async_wait( &print ); i
我已经实现了一个优先级从asio examples开始的任务队列和一个使用这个队列的定时器类。这是代码: priority_task_queue.h class handler_priority_qu
我得到了 boost io_service在一个线程中运行,我想在客户端发生某个事件后 6 秒在该线程中触发回调,如果该客户端已经在运行,则重置该客户端的计时器。 我维护一个 unordered_ma
我目前正在尝试使用 Boost::Asio 创建一个服务器应用程序,它可以做两件简单的事情: 接受客户的传入连接 一旦客户端被接受,启动一个boost::asio::deadline_timer,它会
我想转这个电话: timer.async_wait(handler); 进入这个电话: func(handler); 所以我尝试使用 std::bind: #include #include #i
是否可以在同一个 boost::asio::deadline_timer 上多次调用 async_wait? 我的意思是像下面这样: t->expires_from_now(delay); t->as
我是一名优秀的程序员,十分优秀!