协程定时器
cpp\include\fiber\fiber.hpp里有一个定时器类,只要继承这个类,实现它的纯虚接口run()即可。它内部其实是创建一个协程,在指定的毫秒数以后执行。
/**
* 可用作定时器的协程类
*/
class FIBER_CPP_API fiber_timer
{
public:
fiber_timer(void);
virtual ~fiber_timer(void) {}
/**
* 启动一个协程定时器
* @param milliseconds {unsigned int} 毫秒级时间
* @param stack_size {size_t} 协程的栈空间大小
*/
void start(unsigned int milliseconds, size_t stack_size = 320000);
protected:
/**
* 子类必须实现该纯虚方法,当定时器启动时会回调该方法
*/
virtual void run(void) = 0;
private:
ACL_FIBER* f_;
static void timer_callback(ACL_FIBER* f, void* ctx);
};
在协程内延时
在协程内延时,此时协程会被切换出去,执行别的协程,时间到了再唤醒。
int fiber::delay(unsigned int milliseconds)
参考资料
libfiber的贡献者爱奇艺的技术分享:爱奇艺网络协程编写高并发应用实践
ACL作者介绍libfiber的博客:acl开发–协程篇