我必须在posix中设计一个threadhandler,这样一个单独的线程将专门用于处理函数和事件。对于事件,我将创建一个队列和线程并将事件推送到队列。但是我如何使用相同的线程来处理函数。我是否应该使用相同的队列功能?如果是这样,我将如何传递函数?
如果我以错误的方式提出问题,请帮助或纠正。
答案 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();
}
祝你好运,并确保你的一个函数不会杀死线程或阻塞它太长时间