我一直在使用Pusher一段时间了。我总是认为“实时”意味着“瞬间”。最近我进入了这篇文章:https://en.wikipedia.org/wiki/Real-time_computing,一句话引起了我的注意:
“实时程序必须保证在指定时间内响应 约束“
他们举了一个基于音频处理的例子:
“考虑音频DSP示例;如果进程需要2.01秒 分析,合成或处理2.00秒的声音,事实并非如此 即时的。但是,如果需要1.99秒,则可以或可以制作 进入实时DSP过程。“
我的问题: 1.此定义仅适用于硬件/电子设备或也可应用于软件? 2.如果适用于软件,它是否适用于像Pusher这样的远程服务? 3.推动者被视为“实时”的时间限制是什么? 4. WebRTC,Firebase等其他服务的时间限制是什么?
答案 0 :(得分:5)
对于没有具体回答您问题的长篇文章感到抱歉,但我希望它能让您更好地理解“实时”定义的来源。
是的,“实时”意味着“瞬间”是一种可以理解的混淆。但如果你真的开始思考它,你很快就会发现“瞬间”很难定义。
什么是瞬时意味着什么?从命令时间到响应时间的0(零)秒响应时间(如0秒0 ms 0 ns 0 ps)在物理上是不可能的。然后我们可以试着说瞬时意味着命令响应时间被即时感知,即它不会被视为延迟。但那么......“瞬间感知”究竟意味着什么?被人类感知?好的,那很好,我们到了某个地方。人眼和大脑图像处理是一个非常复杂的机器,它并不是真正简单地在fps中工作,但我们可以使用数据来近似某些。人眼可以“感知屏幕上闪烁的图像持续1/255秒”。那将是0.004
秒或250 fps。因此,通过这种近似,如果图形程序的响应时间<1,则图形程序将是实时的。 0.004秒或运行速度比@ 250 fps快。但我们知道,在实践中,大多数人只需60 fps或0.01666
秒就能让游戏变得流畅。所以现在我们有两个不同的答案。我们能以某种方式为他们辩护吗?是。我们可以说理论上实时意味着0.004秒,但实际上0.01666秒就足够了。
我们可以很高兴并停在这里,但我们正在探索之旅。让我们进一步思考。你想要一个“实时”航空电子自动化系统有0.01666
秒的响应时间吗?对于“实时”核电站系统,您认为可以接受0.01666
秒的响应时间吗?如果命令完成时间为0.0166
秒,那么阀门在物理上需要15秒关闭的油控制系统是否会定义为“实时”?所有这些问题的答案绝对没有。为什么?回答这个并回答为什么“实时”被定义为:“实时程序必须保证在指定的时间限制内响应”。
对不起,我对“Pusher”并不熟悉,但我可以回答你的第一个问题和第二个问题的一部分:“实时”可以应用于任何需要“反应”或回应的系统某种形式的投入。这里的“系统”比你想象的更通用。大脑会有资格,但在工程环境中意味着整个堆栈:硬件+软件。
答案 1 :(得分:3)
- 此定义仅适用于硬件/电子设备,还是也可以应用于软件?
醇>
它也适用于软件。任何有困难时间限制的东西。例如,有实时操作系统,甚至还有Java的实时规范。
- 如果适用于软件,是否适用于Pusher等远程服务?
醇>
如果涉及网络,很难看出如何。更可能的是,它们只是意味着及时,或者它可能只是一种草率的说法推动模型&#39;,顾名思义。这个网站上的大量用户似乎认为这是实时的&#39;意味着现实世界&#39;。在IT中,它意味着能够满足硬实时约束的系统。您引用的维基百科定义是正确的,但示例并不令人满意。
- 推动者被考虑的时间限制是什么?#34;实时&#34;?
醇>
问题是畸形的。真正的问题是Pusher是否真的能够满足硬实时约束,并且只能达到它们的最小值。没有操作系统和网络支持,它似乎根本不可能。
- WebRTC,Firebase等其他服务的时间限制是什么?
醇>
同上。
答案 2 :(得分:1)
术语“实时”的大多数解释是指传统的静态类型,通常称为“硬实时”。虽然对“硬实时”和“软实时”这两个术语的含义没有太多共识,但我在Introduction to Fundamental Principles of Dynamic Real-Time Systems.中提供了基于科学第一原理的定义,以及这些和其他基本术语。