我在一个多线程程序中有一个永远运行的事件循环,很多函数和方法会将消息推送到这个事件循环。简化版:
class EventLoop {
public:
void run();
private:
std::deque<std::string> m_msg_queue;
std::condition_variable m_q_cv;
std::mutex m_q_mtx;
};
void EventLoop::run() {
while(true) {
//use m_q_cv to wait for data in m_msg_queue and dispatch
}
}
int main() {
EventLoop el;
el.run();
return 0;
}
这种方法正确吗?如果是这样,在除 main() 之外的其他函数/方法中将事件排入队列的最佳方法是什么?我不喜欢extern Event el
在其他 .cpp 文件中做...