mok*_*oka 4 c++ boost function
我想编写一个异步计时器,在经过一定时间后调用一个函数.现在我希望能够使用boost::bind()任何特定间隔过去后定时器调用的签名来绑定函数.我现在这样做的方式受到boost线程的启发,它有一些抽象的基类来存储线程函数.这就是我做的:
class TimedFunctionBase
{
public:
virtual void call() = 0;
};
typedef std::shared_ptr<TimedFunctionBase> TimedFunctionBasePtr;
template<class F>
class TimedFunction : public TimedFunctionBase
{
public:
TimedFunction(F _f):
m_function(_f)
{
}
void call()
{
m_function();
}
private:
F m_function;
};
Run Code Online (Sandbox Code Playgroud)
然后,在timer函数内部,我只需保存回调,如下所示:
MyAsyncTimer
{
private:
TimedFunctionBasePtr m_callback;
};
Run Code Online (Sandbox Code Playgroud)
并在定时函数内调用它
m_callback->call();
Run Code Online (Sandbox Code Playgroud)
我的问题其实非常简单:boost是否已经提供了一种机制来实现这一目标?经过长时间的搜索后,我找不到太多内容,内部boost::thread也看起来好像没有为这种用途预定义.也许boost::function_base?文档说你可能不会直接创建它.有提升方式,还是我必须自己编写这些容器类?