问题标签 [soft-real-time]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
2672 浏览

garbage-collection - 实时系统中的垃圾收集器

我是 C#/Java 的新手,并计划为软实时系统制作原型。

如果我像在 C++ 中的内存管理方面那样编写 C#/Java 应用程序,即我明确地“删除”我不再使用的对象,那么应用程序还会受到垃圾收集器的影响吗?如果是这样,它如何影响我的应用程序?

抱歉,如果这听起来像是一个显而易见的答案,但作为新人,我想彻底。

0 投票
9 回答
3110 浏览

architecture - 游戏可以被视为实时系统吗?

我一直在阅读实时系统以及它们如何工作等。我也在查看维基百科的文章,其中说每步带有计时器的国际象棋游戏可以被视为实时系统,因为程序必须计算那个时候的一个动作。其他游戏呢?众所周知,游戏通常会尝试以 25+ FPS 运行,它是否可以被视为软实时系统,因为如果它低于 25(我使用 25 作为预定义的阈值顺便说一句),这不是结束世界,只是对我们想要的性能的打击?

此外 - 游戏也有必须处理的事件。用户使用键盘/鼠标并且系统必须在(再次)预定义的时间内相应地回答这些事件,然后才认为游戏“失败”。

哦,为了简单起见,我现在说的是单人游戏。

听起来游戏符合软实时系统标准,但我想知道我是否遗漏了什么……谢谢。

0 投票
3 回答
2284 浏览

performance - Haskell 对游戏等软实时应用程序的 GC 性能如何?

因为我意识到游戏规则逻辑应该处理巨大的复杂性,所以我正在考虑使用游戏领域的非典型语言作为游戏逻辑脚本语言。游戏内脚本的原因是用较少的代码表示复杂的逻辑。所以需要非常好的抽象语言。

但是大多数抽象的语言都使用 GC。通常,GC 会导致 CPU 突发负载。基本上它会推迟清除内存操作,并立即执行。对包括游戏和 GUI 在内的实时图形非常重要。

AFAIK,Haskell 的 GC 与其他基于 GC 的语言略有不同,因为它具有不可变属性。很难想象。我找不到任何详细的文件。

有什么不同?对于长时间运行的程序,CPU 是否会突然爆发?(随着时间的推移,负载分布良好,可以为每个滴答调用手动完成 GC 命令)

0 投票
12 回答
217047 浏览

real-time - 硬实时、软实时和硬实时之间的区别?

我已经阅读了real-time 不同概念的定义,并且为硬实时系统和软实时系统提供的示例对我来说很有意义。但是,没有真正的解释或可靠的实时系统的例子。根据上面的链接:

坚定:偶尔错过最后期限是可以容忍的,但可能会降低系统的服务质量。结果的有用性在截止日期后为零。

硬实时与硬实时或软实时之间是否有明显的区别,是否有一个很好的例子来说明这种区别?

在评论中,Charles 要求我为新标签提交标签 wiki。标签提供的“公司实时系统”的示例是牛奶供应系统。如果系统在过期时间之后输送牛奶,则认为牛奶“没有用”。人们可以忍受吃没有牛奶的谷物,但体验的质量会下降。

这只是我最初阅读定义时在脑海中形成的想法。我正在寻找一个更好的例子,也许是一个更好的固定实时定义,这将改善我的概念。

0 投票
3 回答
119 浏览

java - java有用的垃圾收集器使用

在函数头中我有这种情况:

我应该在最后保留“=null”,还是在退出函数时使用 Java 本身?

我的目的是让这些对象尽快为垃圾收集做好准备。这是一个软实时系统。

0 投票
1 回答
212 浏览

real-time - Firebase 是否适合硬实时计算?

我最近遇到了 Firebase,发现它非常有趣。

在阅读了硬实时和软实时之间的区别之后,我现在很好奇 Firebase 是否适合硬实时计算。

我的直觉是,它只会真正适用于软实时,但我很少遇到(除了它作为 SaaS 的性质)来真正验证这种感觉。

0 投票
1 回答
468 浏览

c++ - 在 Haskell 中使用 C++ 互操作构建一个简单的 DSL

我正在设计一种简单的解释语言来测试实时嵌入式系统。控制流受到严格限制,以提供关于脚本将执行什么以及它们将运行多长时间的强大静态保证。例如,您只能在恒定条件上分支或在固定范围内循环。

C++ 中存在大量现有代码库以及相关模型和 IO 库,因此这种语言必须能够调用 C++。被测系统有严格的时序要求,所以我们不能容忍测试框架中有太多的抖动。我们过去的解决方案是嵌入在 C++ 运行时中的自定义 DSL,但我们最终重新发明了太多的轮子(解析器、linter、交互式解释器等)来实现我们需要的静态保证。

Haskell 用于制作具有这些保证的嵌入式 DSL 的工具对我非常有吸引力,但我一直在确定如何将其嵌入到软实时 C++ 运行时中。有任何想法吗?指向任何库/现有项目的指针将不胜感激!

0 投票
1 回答
227 浏览

real-time - 通信中间件如何支持软实时应用?

如今,“实时”的概念有很多不同的解释。在这个问题中,提供了两个定义:

硬实时定义将任何错过的最后期限视为系统故障。这种调度被广泛用于关键任务系统中,在这些系统中,未能遵守时序约束会导致生命或财产损失。

软实时定义允许经常错过最后期限,只要任务及时执行,它们的结果就会继续有价值。已完成的任务在截止日期之前可能会增加价值,而在截止日期之后价值会减少。

在我的研究中,我得出以下结论:

  • 如果中间件提供对系统资源的可预测和高效的端到端控制,则它支持硬实时。就像设置中间件创建的所有线程的线程优先级一样。
  • 在我看来,良好的性能是支持软实时应用程序最相关的因素。

这是真的?通信中间件的其他相关特性是否支持软实时应用程序?

0 投票
4 回答
398 浏览

python - 如何在python中准确采样

在工作中,我有一个需求:在 10 秒内每 0.08 秒采样一次。

我使用while循环,但它失败了。

最后,我根本没有数据,我认为这if float(time.time() -start_t) % float(0.08) == 0:不起作用。

我很困惑如何设置输入采样代码的条件。