如何实现可选的延迟处理

时间:2015-03-20 14:31:08

标签: c++ linux gcc boost

我正在使用GCC 4.4.7(还没有所有C ++ 11的东西)和Centos 6.2上的Boost 1.55。这不是家庭作业或课堂作业。

第三方库回调我的应用程序。在单个线程上调用此函数,我的工作是处理消息并尽快返回

void mycallback(Message& m)
{
    /// process m here and return quickly
    doProcessing(m);
}

现在我们要求根据消息中的属性延迟处理某些消息。

我们仍然需要尽快将控制权交还给第三方库,但在内部我希望在处理之前保留1秒的消息

void mycallback(Message& m)
{
    if(m.type == 1) {    
       doProcessingInOneSecond(m);
    }
    else {
       doProcessing(m);
    }
}

我只想获得一些关于从社区处理此问题的好方法的想法。

是约束
1. the callback needs to return as quickly as possible in all cases
2. the callback may be invoked many times per second (always on the same thread)
3. messages of the same type must always be processed sequentially

0 个答案:

没有答案