2025年环形队列有什么应用场景(环形队列有什么应用场景吗)

环形队列有什么应用场景(环形队列有什么应用场景吗)前面介绍的队列 queue 可以用于传输数据 在任务之间 任务和中断之间 消息队列用于传输多个数据 但是有时候我们只需要传递状态 这个状态值需要用一个数值表示 比如 在这种情况下我们只需要维护一个数值 使用信号量效率更高 更节省内存 本章涉及如下内容 12 1 信号量的特性 12 1 1 信号量的常规操作 信号量这个名字很恰当 计数型信号量的典型场景是 二进制信号量跟计数型的唯一差别

大家好,我是讯享网,很高兴认识大家。



前面介绍的队列(queue)可以用于传输数据:在任务之间、任务和中断之间。

消息队列用于传输多个数据,但是有时候我们只需要传递状态,这个状态值需要用一个数值表示,比如:

    在这种情况下我们只需要维护一个数值,使用信号量效率更高、更节省内存 本章涉及如下内容:

      12.1 信号量的特性

      12.1.1 信号量的常规操作

      信号量这个名字很恰当:

        计数型信号量的典型场景是:

          二进制信号量跟计数型的唯一差别,就是计数值的最大值被限定为1。

          12.1.2 信号量跟队列的对比

          差异列表如下:

          12.1.3 两种信号量的对比


          讯享网

          信号量的计数值都有限制:限定了最大值。如果最大值被限定为1,那么它就是二进制信号量;如果最大值不是1,它就是计数型信号量。

          差别列表如下:

          12.2 信号量函数

          使用信号量时,先创建、然后去添加资源、获得资源。使用句柄来表示一个信号量。

          12.2.1 创建

          使用信号量之前,要先创建,得到一个句柄;使用信号量时,要使用句柄来表明使用哪个信号量。 对于二进制信号量、计数型信号量,它们的创建函数不一样:

          创建二进制信号量的函数原型如下:

          创建计数型信号量的函数原型如下:

          12.2.2 删除

          对于动态创建的信号量,不再需要它们时,可以删除它们以回收内存。

          vSemaphoreDelete可以用来删除二进制信号量、计数型信号量,函数原型如下:

          12.2.3 give/take

          二进制信号量、计数型信号量的give、take操作函数是一样的。这些函数也分为2个版本:给任务使用,给ISR使用。列表如下:

          xSemaphoreGive的函数原型如下:

          xSemaphoreGive函数的参数与返回值列表如下:

          pxHigherPriorityTaskWoken的函数原型如下:

          xSemaphoreGiveFromISR函数的参数与返回值列表如下:

          xSemaphoreTake的函数原型如下:

          xSemaphoreTake函数的参数与返回值列表如下:

          xSemaphoreTakeFromISR的函数原型如下:

          xSemaphoreTakeFromISR函数的参数与返回值列表如下:

          小讯
          上一篇 2025-05-13 20:41
          下一篇 2025-06-13 15:28

          相关推荐

          版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
          如需转载请保留出处:https://51itzy.com/kjqy/205087.html