如果你使用过gui工具包,你就知道有一个事件循环/主循环应该在一切完成后执行,这将使应用程序保持活跃并响应不同的事件.例如,对于Qt,您可以在main()中执行此操作:
int main() {
QApplication app(argc, argv);
// init code
return app.exec();
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,app.exec()是应用程序的主循环.
实现这种循环的显而易见的方法是:
void exec() {
while (1) {
process_events(); // create a thread for each new event (possibly?)
}
}
Run Code Online (Sandbox Code Playgroud)
但是这会将CPU限制在100%并且实际上是无用的.现在,我如何实现这样一个响应的事件循环,而不必完全占用CPU?
回答在Python和/或C++中受到赞赏.谢谢.
脚注:为了学习,我将实现自己的信号/插槽,我会用它们来生成自定义事件(例如go_forward_event(steps)).但是如果你知道如何手动使用系统事件,我也想知道这一点.