嵌入式基础– Threads vs Tasks

32位微控制器的功能不断增强,成本不断降低,这导致实时操作系统成为许多嵌入式系统中的主要调度程序。尽管市场上有一百多种不同的RTOS口味,但工程师有时仍在努力应对基本术语。以线程和任务为例,这些线程和任务在许多情况下被同义使用,但表示的概念略有不同。

ThreadX用户指南第5版将嵌入式任务定义为“执行特定职责的应用程序的半独立部分”。换句话说,任务往往是由应用程序执行的高级任务。任务一词通常以一种通用的方式使用,以致于很难确定开发人员是在引用程序段还是在完全独立且可加载的程序。

另一方面,线程被定义为“在进程内执行的半独立程序段”。对于使用微控制器的嵌入式软件开发人员来说,过程本质上是系统上运行的整个应用程序。线程是一个小的程序,在整个应用程序中具有特定的功能和目的。线程的级别往往比任务低,并且开销最小。

一个人遇到的大多数RTOS实际上可能是线程调度程序,而不是任务调度程序,但是就目前而言,许多开发人员只是互换使用这些术语。它’很高兴知道两者之间存在细微的差异。

2 thoughts 上 “Embedded Basics – Threads vs Tasks”

  1. 首先感谢您的发帖,至少对我而言,线程与任务是一种标准且非常令人困惑的事情。

    在您的博客中,您是说我们永远不会在大多数RTOS(其所有线程)中使用任务吗?像在FreeRTOS中一样,xTaskCreate()api创建线程而不是任务?

    您可以使用一些实时嵌入式示例来区分两者吗?

    1. 这是一个令人困惑的术语,因为在微控制器级别,线程和任务是同一回事。人们可以互换使用它们,它们的含义相同。如果您进入通用计算应用程序,则会有细微的差别。如果您查看与FreeRTOS竞争的ThreadX,则ThreadX使用术语“线程”,而FreeRTOS使用任务。他们正在做同样的事情。希望对您有所帮助!

发表评论

您的电子邮件地址不会被公开。 必需的地方已做标记 *

该网站使用Akismet减少垃圾邮件。 了解如何处理您的评论数据.