确定性应用程序受益于实时操作系统(RTOS)的多线程和基于优先级的调度模式。创建确定性应用程序时,应将应用程序任务分开以创建多线程的应用程序,根据RTOS设置的优先级接收专有的处理器资源。

多线程

只有一个CPU的计算机通过交替运行应用程序实现多任务处理。只要处理器分配给各个应用程序的时间足够小,计算机就仿佛在同步运行多个应用程序。具有多个CPU的计算机可实现真正的并行机制。

多线程是将多任务的概念应用到应用程序中,将一个应用程序分解为多个交替执行的较小任务,每个任务在不同的线程内执行。线程是在执行系统的应用程序中独立的执行流。多线程应用程序将处理器效率最大化,有其他线程运行就绪时,处理器不会处于闲时状态。读取写入文件,包含I/O操作或轮询用户界面的应用程序都能受益于多线程的优点,因为在上述任务间隔的空隙,应用程序可利用处理器运行其他任务。

基于优先级的调度模式

RT终端上的RTOS使用循环和抢占式的排序方法对执行线程进行排序。

轮询调度-为所有线程使用相同的优先级。相同优先级的线程分配的处理器时间相同。例如,每个普通优先级的线程都有10 ms运行时间。处理器在10 ms内执行任务,未完成的任务等待在下一个时间周期中完成。

抢占式调度-较高优先级线程立即执行,较低优先级线程暂停执行。实时优先级是最高级别的优先级。

定时结构的优先级

LabVIEW定时结构的优先级低于实时优先级高于高优先级。用户可设置定时循环的优先级,指定某个定时循环相对于VI中其他定时循环的相对优先级。使用配置定时循环对话框配置定时源、周期、优先级和其他定时循环执行的高级选项。

划分任务创建确定性多线程应用程序

应用程序的确定性取决于各个任务都在指定时间范围内完成。因此,确定性任务需要专有的处理器资源以保证按时完成。划分任务保证了每个任务都能获得所需的处理器资源,并在按时完成任务的执行。

将确定性任务与其他任务分离可保证确定性任务有足够的处理器资源。例如,应用程序以固定时间间隔采集数据,并将数据保存在磁盘上,数据采集的定时和控制必须是确定性的。但是,将数据保存在磁盘上不是一个确定性的任务,因为文件I/O操作具有不可预期的响应时间。文件I/O的时间取决于硬件和可用的硬件资源。可不同优先级的定时循环或VI控制确定性任务的执行和定时属性。

注: 在确定性任务中,确保每个操作都有专有的处理器资源,避免不必要的并行机制。在多CPU计算机上,创建的操作数不要大于可用的CPU的数量。因为无法确定并行操作的执行顺序,不必要的并行处理会影响程序的确定性。