题目好长.
废话少言.
现在遇到的问题主要在于模糊的”消息泵”概念.
是的,我打算自建一个”消息泵”机制,目的是减少模块耦合,丰富处理方式.便于面向对象开发?
“消息泵”需要
1. 与事件产生处理模块并行
2. 能够随时启动打断其它事件产生处理模块,又不发生其它错误.
消息泵维护一个消息队列,
通过对注册的不同”事件处理函数队列”中函数的逐一调用,完成
不同”事件处理函数队列”中的函数属于并行关系.”特定事件处理函数”内的函数们是由队列关系.
这就要求消息泵能够创建并行函数.而它本身的优先级最高,每得到一次它自己注册的定时器事件即对它创建的函数上下文进行保存,以开始自己的新工作.(当然有更好的技术更好).
?问题是:我们的事件处理函数如果在旧的周期没有任务,那么在新的周期又得到了新的任务,怎么办?
一个解决方式搞自己的消息队列作为缓冲,并调整自己的”接收窗口”(TCP/IP?汗)
但是如果长期积压就会导致自己和其它事件的处理不能同步.
建议是:延长整体演示刷新时间(即帧率).因为一个事件不能同步处理可能导致逻辑错误.
也就是当一个消息队列满了.除了公共时间消息产生机制外的其它消息产生机制应当阻尼.
另外为了防止:写冲突.不应当允许物理模拟外的其它模块直接调用”图像构建与2D模拟”.物理模拟以对象为单位进行处理,并且监控各种事件(含接触).确定时间的确定的地方只有一个存在的对象的某部分在那里.(云呢?水呢?自然是被挤开了).流体和气体并无其它不同,需要自己的物理模型罢了.我的流体力学不是非常好,不能一下子写出关于它们的公式,但这不代表不能完成.