我的意思是一个基于事件的程序,一个"静态"程序,它不仅可以执行任务,还可以等待事件等,并且在用户手动关闭它之前不会结束.
编辑:我已在下面回答,例如我们每天使用的程序,基于Windows,如Microsoft Word,Firefox等.这类程序叫做什么?怎么可能做那样的事情?
编辑2:我打算单独回复一些答案,但我最好在这里回复.
我想要做的程序就像蜘蛛一样在VPS中作为守护进程工作.当它启动时,它应该看看是否有任务要做.如果是这样,它将生成必要的线程(它也是基于线程的),因此main函数需要基于事件的无限循环.
Tyl*_*nry 11
这些程序通常围绕所谓的" 事件循环 " 编写.
该程序的主要功能通常是在psuedocode中,如下所示:
while (!shouldClose()) {
Event e = getEvent();
dispatchEvent(e);
}
Run Code Online (Sandbox Code Playgroud)
其中dispatchEvent函数采用事件e,确定它应该调用哪个函数(一个或多个),然后用该事件的任何参数调用这些功能.
getEvent根据程序的性质,该功能可以是任意数量的东西.对于交互式命令行程序,它可能只是从用户检索和解析一行文本.对于GUI程序,它可能正在等待鼠标点击或来自窗口系统的其他消息.对于网络服务,它可能正在等待传入的数据包.
例如,在GUI程序中,getEvent可能会等待,然后从OS窗口系统接收鼠标单击消息.然后dispatchEvent查看鼠标单击事件,根据单击按钮的坐标确定,然后查找与该按钮对应的对象,并调用buttonObject.clicked().然后执行buttonObject.clicked是负责执行任何代码应该是单击按钮的结果.一旦完成运行,控制将返回到事件循环,并处理下一个事件.
现在,显然,对于GUI程序,这可能会变得相当复杂,因此您通常不会从头开始编写自己的事件循环.相反,程序员经常使用图形框架为您提供这样的循环,然后只填写事件响应代码.对于命令行程序和网络服务,事件处理起来要简单一些,并且通常从头开始编写循环.
| 归档时间: |
|
| 查看次数: |
401 次 |
| 最近记录: |