我正在写一个软件,应该模拟一些飞机系统,除了飞行动力学,在VB.Net的娱乐飞行模拟器。
例如,程序员会根据可用的电源计算哪个模拟的‘断路器/继电器’应该断开或闭合,从而得到一个简短的函数,如:
If PwrSrc.avail = true and Breaker.hasFailed = false then
Breaker.close
End if代码应该每X毫秒运行一次,但软件需要计算其他系统状态,如油,气动等。
为每个模拟系统运行线程是否有意义,或者使用单个线程会更快吗?
稍后将添加更多功能,系统将变得更加复杂,例如液压系统的压力值或电气系统的蓄电池发动机。首先,它应该只是一个非常基本的模拟。
如果在“第一”模拟步骤中某些数据对其他线程不可用/有效,这对我来说不是一个(巨大的)问题。与‘电动液压泵功率利用率’一样,是在第一个‘电气系统’-线程完成后设置的,并且不会是‘液压系统’-线程第一次运行的正确值,因为它可能会使用上一个模拟步骤中的数据。
发布于 2020-08-26 15:12:44
在这里,你可以使用多线程,也可以使用基于事件的方法来更好地利用资源。使用可观察对象,然后订阅这些事件,如油检查/和其他事件,如您在描述中提到的事件。基于事件创建一个线程,该线程将处理您的请求。使用线程池也可以更好地利用资源。线程没有确切的用例。如果您想将主线程的负载减少到其他线程,那么您可以很好地继续并实现它。但在深入讨论这些主题之前,先看一下以下几点:
发布于 2020-08-26 16:03:32
从你的帖子中,我要说“不,使用线程来完成这些简单的任务是没有意义的”
使这个多线程会给程序增加一层显著的复杂性,而且你会把自己绑在结上(哈),让一切变得顺畅。
你本质上是在编写一个游戏,循环几个布尔值/改变一些UI元素的外观,你可以很容易地在一个“游戏循环”中每秒(数以万计)地做几千次。你不需要“让它更快”,因为它已经大大超过了人类使用它的性能。
如果您开始从事一些需要进行大量CPU或磁盘工作的工作,您可以利用基于任务的异步模式来保持响应,UI明智,这就消除了制作“明显的多线程”所涉及的大量复杂性
在某些时候,你可能会想跳到多线程,但我建议你先构建一些东西,然后运行它,只有当你确定存在一个只有多线程才能解决的固有问题时,才切换到多线程。这些东西很少,而且很可能您玩过的最复杂的游戏也不是真正的大规模多线程
https://stackoverflow.com/questions/63575497
复制相似问题