0

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

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

4

1 回答 1

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();
}

祝你好运,异常处理并确保你的函数之一不会杀死线程或阻塞它太久

于 2013-09-25T14:16:54.750 回答