首页 > 解决方案 > 使用线程处理简单的任务有意义吗?

问题描述

我正在为娱乐飞行模拟器编写一个软件,它应该在 VB.Net 中模拟一些飞机系统,但飞行动力学除外。

例如,程序根据可用的电源计算应打开或关闭的模拟“断路器/继电器”,这会导致以下功能:

If PwrSrc.avail = true and Breaker.hasFailed = false then

 Breaker.close 

End if

代码应该每 X 毫秒运行一次,但软件还需要计算其他系统状态,如油、气动等。

为每个模拟系统运行一个线程是否有意义,还是使用单个线程会更快?

稍后将添加更多功能并且系统将变得更加复杂,例如液压系统的压力值或电气系统的存储电池能量。一开始它应该只是一个非常基本的模拟。

如果在“第一个”模拟步骤中某些数据对其他线程不可用/有效,这对我来说不是一个(巨大的)问题。就像在第一个“电气系统”线程完成后设置“电动液压泵功率可用性”一样,并且不会是“液压系统”线程第一次运行的正确值,因为它可能使用来自先前模拟步骤的数据.

标签: vb.netmultithreadingsimulation

解决方案


在这里,您可以使用多线程,也可以使用基于事件来更好地利用资源。使用 oberables,然后订阅这些事件,例如油检查/和您在描述中提到的其他事件。根据事件创建一个线程,该线程将处理您的请求。使用线程池也可以更好地利用资源。线程没有确切的用例。如果您想将主线程的负载减少到其他线程,那么您可以继续实施它。但在进入主题之前,请先看看以下几点,

  1. 我要在多个线程之间共享全局变量吗?然后需要注意数据同步
  2. 尽可能使用线程池。
  3. 在必要时使用基于事件的东西。
  4. 不要忘记在使用后关闭资源,例如关闭线程池。
  5. 根据您的 CPU 内核设置线程池的大小,如内核数 * 2。

推荐阅读