线任务区别

概览

本文档是下列系列白皮书的一部分:
多核编程基础系列白皮书

Multicore Programming Fundamentals Whitepaper Series

多核编程基础系列白皮书

通过阅读本文档,你将了解在应用程序中使用多任务和多线程的重要性。

内容

背景

多核系统包含一个CPU,CPU包含两个或两个以上内核。每个内核有独立的微处理器。 一个多核的处理器在一个实体封装内进行多处理任务。 多核系统共享计算资源。在多处理器系统中,计算资源通常有多份,例如,L2缓存、前端总线。

多核系统与多处理系统性能相近,但是成本更低,因为多核系统不需要支持多处理器的主板。

任务

在计算中,多任务是指多个任务(进程)共享处理资源(例如,CPU)的一种方法。 在Windows XP等多任务操作系统上,可同时运行多个应用程序。 多任务指的是操作系统在计算任务之间快速切换到能力。对于用户来说,多任务就是不同的应用程序同时执行不同的操作。

CPU时钟的速度随时间逐渐加快,不仅应用程序运行速度加快,操作系统也能在应用程序之间更快地切换。 这保证了更好的整体性能。 在计算机上,许多操作可同时发生,单个应用程序可运行得更快。

单核

如果计算机只有一个CPU内核,一次只能运行一个任务,表示CPU正在执行某个任务的指令。 多任务机制在一个时间点上,安排某个任务运行,另一个任务等待。

 

Single-core systems enable multitasking operating systems

图1:单核系统在一个CPU上实现多任务

 

多核

在多核系统上运行时,多任务操作系统可事实上同时运行多个任务。 多个计算引擎在不同的任务上独立工作。

例如,在双核系统上,文字处理、电子邮件、网页浏览和杀毒软件可分别占用一个单独的处理器核。 检查电子邮件和文字处理可同步进行,从而提高应用程序的性能。

 

Dual-core systems enable multitasking operating systems to execute two tasks simultaneously

图2:双核系统使得操作系统可以同时执行两个任务

 

操作系统将不同的应用程序(进行)分配在不同的CPU核上,可更有效地执行多个应用程序。 计算机可将每个内核管理的工作分配在不同的内核上,在一半数量的应用程序之间切换,从而实现更好的性能。 事实上,应用程序是并行运行的。

 

线程

多线程是将多任务的理念延伸到应用程序内。可将应用程序内的操作进一步划分为多个独立的线程。 线程之间并行运行。 操作系统将处理时间分配在不同的应用程序上,也分配在应用程序的线程上。

在多线程的NI LabVIEW程序中,一个应用程序会被分为四个线程:用户界面线程、数据采集线程、网络通信线程、记录线程。 可根据需要优先安排这些线程,这样线程就可独立操作。 在多线程应用程序中,多个任务可与系统上运行的其他程序并行执行。

Dual-core systems enable multitasking operating systems to execute two tasks simultaneously

图3:双核系统的多线程

启用了多线程的应用程序具有下列优势:

  • 更高效的CPU使用率
  • 更好的系统稳定性
  • 多处理器系统上更优越的性能

许多应用程序会同步调用资源(例如,仪器)。 完成这些调用通常需要花很多时间。 在单线程应用程序中,同步调用会阻碍或挂起应用程序中的其他任务,直到调用完成。 多线程可避免发生这种情况。

同步调用在一个线程运行时,程序的其他部分在其他线程运行。 应用程序的执行会持续进行,而不是被挂起直到同步调用结束。 通过这种方法,多线程应用程序最大限度地提高了CPU的效率,当应用程序的线程运行就绪时,CPU不会处于空闲状态。

LabVIEW中的线程

LabVIEW自动将每个应用程序分解为多个执行线程。 线程管理的复杂任务内化在LabVIEW执行系统之中。

 

图4:LabVIEW使用多个执行线程

LabVIEW中的任务

LabVIEW在支持多线程的操作系统上使用抢占式多线程机制。 LabVIEW也使用协同式多线程机制。 抢占式多线程的操作系统和处理器使用固定数量的线程。所以,在某些情况下,这些系统会转而使用协同式多线程。

执行系统在使用了线程的VI上进行抢占式多任务机制。 但是,可用线程的数量有限。 对于高度并行的应用程序,当可用的线程繁忙时,执行系统使用协同式多任务。 操作系统也处理应用程序和其他任务之间的抢占式多任务机制。

Was this information helpful?

Yes

No