问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

多线程和多任务在编程中的区别

创作时间:
作者:
@小白创作中心

多线程和多任务在编程中的区别

引用
1
来源
1.
https://www.ni.com/zh-cn/support/documentation/supplemental/07/differences-between-multithreading-and-multitasking-for-programm.html?srsltid=AfmBOopkW6eAvdSBjwtB2nvrdscZ5-VXgMI9oqeHfPHzmQinsXSeq7gG

多线程和多任务是现代计算机系统中两个重要的概念,它们在提高程序执行效率和系统资源利用率方面发挥着关键作用。本文将详细介绍多线程和多任务在编程中的区别,并结合LabVIEW这一具体开发环境进行说明。

概览

本文档属于多核编程基础白皮书系列,旨在帮助读者理解在应用程序中使用多任务和多线程的重要性。

背景

多核系统是包含两个或多个核的单处理器CPU,每个核都有独立的微处理器。多核微处理器在单个物理封装中执行多处理任务。多核系统共享多处理器系统中具有多份的计算资源,如L2缓存和前端总线。

多核系统提供的性能类似于多处理器系统,但通常成本较低,因为不需要支持多处理器(如多处理器插槽)的主板。

多任务

在计算领域,多任务处理是指多个任务(又称进程)共享CPU等常见处理资源的方法。使用Windows XP等多任务操作系统,用户可同时运行多个应用程序。多任务是指操作系统能够在每个计算任务之间快速切换,对于用户来说,多任务就是不同的应用程序同时执行不同的操作。

随着CPU时钟速度稳步提高,不仅应用程序运行速度更快,操作系统在应用程序间的切换速度也更快。这改善了整体性能。许多操作可在一台计算机上同时发生,单个应用程序可更快运行。

单核

对于单CPU内核的计算机,任何时候都只能运行一个任务,也就是CPU只能同时处理一个任务的指令。多任务通过安排可以在任何给定时间运行的任务,以及另一个等待的任务的运行时间来解决这个问题。


图1.单核系统在单CPU上安排任务以实现多任务处理

多核

在多核系统上运行时,多任务操作系统可真正同时执行多个任务。多个计算引擎可以独立处理不同的任务。

例如,在双核系统上,4个应用程序(例如,文字处理软件、电子邮件客户端、网页浏览器和杀毒软件)可同时访问独立的处理器内核。用户可以通过同时查看电子邮件和输入信件内容执行多任务,从而提高应用程序的整体性能。


图2.双核系统启用多任务操作系统同时执行两个任务

操作系统通过在独立的CPU核之间分配不同的应用程序或进程,更高效地执行多个应用程序。计算机可以分散工作量(每个核管理和切换的应用程序数量是之前的一半),并改善整体吞吐量和性能。实际上,这些应用程序是并行运行的。

多线程

多线程将多任务的概念扩展到应用程序中,因此用户可将单个应用程序中的特定操作细分为单独的线程。每个线程可并行运行。操作系统不仅可以给不同的应用程序分配处理时间,也可以给同一个应用程序中的每个线程分配处理时间。

在多线程NI LabVIEW程序中,范例应用程序可分为4个线程:用户界面线程、数据采集线程、网络通信线程和日志记录线程。用户可对每个线程进行优先级排序,使其独立运行。因此,在多线程应用程序中,多个任务可与系统中运行的其他应用程序并行执行。


图3.双核系统启用多线程

利用多线程技术的应用程序有以下优势:

  • 更高效地使用CPU
  • 更好的系统可靠性
  • 更优化的多处理器性能

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

当同步调用在一个线程上运行时,程序的其他部分仍然可以在不同的线程上运行。应用程序会继续执行,而不是挂起至同步调用结束。通过这种方法,多线程应用程序最大限度地提高了CPU的效率,因为当应用程序的线程准备就绪时,CPU不会处于空闲状态。

使用LabVIEW进行多线程

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


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

LabVIEW中的多任务

LabVIEW在支持抢占式多线程的操作系统上使用这种功能。LabVIEW也使用协同式多线程。在抢占式多线程技术中,操作系统和处理器只能使用有限数量的线程,所以在特定情况下,这些系统会使用协同式多线程技术。

执行系统利用线程使VI执行抢占式多任务机制。然而,可用线程的数量是有限的。对于高度并行的应用程序,在可用线程繁忙的情况下,执行系统使用协同式多任务。操作系统也会在应用程序和其他任务之间处理抢占式多任务。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号