在C ++中重用一个线程用于多个函数和事件(基本上是POSIX线程)

时间:2013-09-25 09:23:34

标签: c++ multithreading posix

我必须在posix中设计一个threadhandler,这样一个单独的线程将专门用于处理函数和事件。对于事件,我将创建一个队列和线程并将事件推送到队列。但是我如何使用相同的线程来处理函数。我是否应该使用相同的队列功能?如果是这样,我将如何传递函数?

如果我以错误的方式提出问题,请帮助或纠正。

1 个答案:

答案 0 :(得分:0)

我会留下另一条评论,但我需要空间......

无效C但你明白了:

struct task //could use an union
{
    int type; //0 if task is event, 1 for "function", etc...consider using enums
    int ev;
    std::function<void()>> func;
};
std::queue<task> pending;

.... 在你的主题中:

auto t = pending.front();
pending.pop();
if(t.type==0)//we have an event to process
{
   proc_event(t);
}
else if(t.type==1)//run a function
{
   t.func();
}

祝你好运,并确保你的一个函数不会杀死线程或阻塞它太长时间