事件流。 如何控制并使事件闲置?(+已解决) - 页 2

 

Yedelkin:

相应地,现在还不清楚应该多长时间发送一次用户事件,以便它们不会溢出终端事件队列......

我可以直接看出,你没有读过我的帖子。
 
Yedelkin:

我找不到问题的答案:事件队列溢出如何影响RAM大小?如果事件队列变得满了,溢出队列的事件会去哪里?保留给那些碰巧 "离开历史 "的事件的部分RAM被释放出来了吗?

也许我的问题在术语上并不正确,但(我希望)它们抓住了问题的本质。

该队列是动态的,并在必要时不断增长。

但到了一定的限度,新的事件就会被丢弃,因为很明显,进一步加载队列是没有意义的。

 
sergeev:
我一眼就能看出,你没有读过我的帖子。

你为什么不 "读它"?你解决了你的问题,我正试图解决我的问题,是一个不同的问题。当我阅读讨论时,我没有发现我的问题的答案。

你没有回答我的主要问题。:/ 这正是 "一目了然 "之处 :)

 
Renat:

该队列是动态的,并根据需要增长。

但到了一定的限度,新的事件就会被丢弃,因为很明显,进一步加载队列是没有意义的。

OK,队列是 "动态 "的。增加到某个 "特定 "的限度。但为什么没有人能够给出一个看似简单的问题的答案:事件队列溢出如何影响内存大小

后续问题:"维持 "一个溢出的事件队列需要多少RAM? 如果 "到了一定的限度,新的事件就会被丢弃",先前为这些被丢弃的事件分配的RAM是否被释放?

问题的目的:了解用户事件的流动如何增加(增加)终端消耗的RAM量。

 
Yedelkin:

如果事件队列已满,溢出队列的事件会去哪里?为那些 "脱离历史 "的事件保留的部分RAM是否被释放出来?

也许我的问题在术语上并不正确,但(我希望)它们传达了问题的本质。

该部分说程序执行当队列溢出时, 新的事件会被丢弃。

客户端将发生的事件发送至相应的开放图。事件也可以由图表(图表事件)或mql5程序(自定义事件)产生。通过设置图表的CHART_EVENT_OBJECT_CREATECHART_EVENT_OBJECT_DELETE 属性,可以启用或禁用图表上创建和删除图形对象事件的生成。每个mql5程序和每个图表都有自己的事件队列,所有的新事件都存储在这里。

该程序只接收来自它所运行的图表的事件。所有的事件都按照收到的顺序逐一处理。如果队列中已经有一个事件NewTick,或者该事件处于处理状态,一个新的事件NewTick不会被放入mql5-程序的队列中。同样,如果mql5-程序的队列已经包含了ChartEvent 事件或者该事件正在被处理,那么该类型的新事件就不会被放入队列中。

事件队列的大小有限,但足够大,所以对于一个正确编写的程序来说,队列溢出的可能性不大。当队列溢出时,新的事件被丢弃而不被列入队列。

非常不鼓励使用无限循环来处理事件。这条规则的唯一例外是处理单一启动 事件的脚本。

图书馆 不处理任何事件。

 
Yedelkin:

你为什么不 "读它"?你解决了你的问题,我正试图解决我的问题,是一个不同的问题。当我阅读讨论时,我没有发现我的问题的答案。

你没有回答我的主要问题。:/ 我肯定能 "马上看到":)


你的问题 "用户事件 的发送频率大约是多少,这样它们才不会溢出队列"。

我在第一页的答案是 "随着OnChartEvent调用的频率"。


也就是说,一个事件就是一个OnChartEvent。 中间不应该有两个以上的事件。

这就是所有的数学知识。

再一次,阅读第一页。我展示了当终端事件被处理而不是用户事件时,如何避免用户事件的累积。就这么简单。

 
Yedelkin:

问题的目的:了解用户事件的 线程如何增加(增加)终端所消耗的RAM的大小。

为什么?嗯,是的,确实如此。该问题的价格是几兆字节。

这不是问题所在,或者说不是真正的问题所在。

 
Rosh:

该部分说的是方案执行,这......。

1、《手册》部分发生了重大变化。

1.1 例如,过去是:"客户终端将所有发生的事件放入一个公共队列因此,事件是按照到达的顺序一个接一个地处理的。N ewTick事件是个例外 如果队列中已经有这样一个事件,或者这个事件正在被处理,新的NewTick事件就不会被放入队列中"。

现在:"该程序只从它所运行的图表中接收事件 所有的事件都按照收到的顺序一个接一个地处理。如果队列中已经有一个事件 NewTick 或者这个事件处于处理状态,那么一个新的事件NewTick就不会被放入mql5-程序的队列中同样,如果在mql5-program的队列中已经有一个 ChartEvent 事件 ,或者这样的事件正在被处理,那么这种类型的新事件就不会 被放入队列中。

俗话说,"见仁见智"。你至少应该得到警告。:/ 这一变化从根本上改变了我们处理自定义事件的方式。

1.2. 下一步。丢弃事件的原则被颠覆了。以前是:"事件队列的大小是有限的。当队列变满时,旧的 事件被删除而不被处理 ,以腾出空间给新进来的事件"。

现在:"当队列满了,新的 事件就会被丢弃而不被排队。"正如他们所说,谢谢你:我们失去了最相关的用户事件。

2.所引用的《手册》部分并没有回答我的基本问题。事件队列溢出如何影响RAM大小?需要多少RAM来 "维持 "一个溢出的事件队列? 如果 "到了一定的限度,新的事件就会被丢弃",以前为这些被丢弃的事件分配的RAM是否被释放出来?

 

TheXpert:

耶德尔金

问题的目的:了解用户事件 流如何增加(增加)终端所消耗的RAM的大小。

为什么?嗯,是的,确实如此。这个问题价值几兆字节。

奇怪的问题:"为什么?"- 答案是:要理解,以便得出结论。
 
Yedelkin:

2.手册》中引用的部分并没有回答我的主要问题。事件队列溢出如何影响RAM大小?需 要多少RAM来 "维持 "一个溢出的事件队列? 如果 "到了一定的限度,新的事件就会被丢弃",以前为这些被丢弃的事件分配的RAM是否被释放出来?

如果出现这种问题,那么事情就非常糟糕了。我认为一个溢出的事件队列是寻找内存问题的最后一个地方。

如果一个事件被丢弃了,那么它只是没有被放入队列。记忆不在增长。