我必须在 posix 中设计一个线程处理程序,这样一个线程将专用于处理函数和事件。对于事件,我将创建一个队列和线程并将事件推送到队列。但是我将如何使用相同的线程来处理函数。我也应该为函数使用相同的队列吗?如果是这样,我将如何在其中传递函数?
如果我以错误的方式提出问题,请帮助或更正。
我必须在 posix 中设计一个线程处理程序,这样一个线程将专用于处理函数和事件。对于事件,我将创建一个队列和线程并将事件推送到队列。但是我将如何使用相同的线程来处理函数。我也应该为函数使用相同的队列吗?如果是这样,我将如何在其中传递函数?
如果我以错误的方式提出问题,请帮助或更正。
我会留下另一条评论,但我需要空间......
无效的 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();
}
祝你好运,异常处理并确保你的函数之一不会杀死线程或阻塞它太久