当前位置: 首页 > 知识库问答 >
问题:

nuttx:为什么工作队列线程需要轮询?

印宏阔
2023-03-14

Nuttx工作线程(LP和HP)具有轮询间隔,仅针对工作线程0。我想知道为什么需要轮询间隔?

当有人将一个新工作排入工作队列时,将向一个辅助线程发出处理它的信号。如果所有工作线程都忙,则当线程完成当前工作并再次检查队列时,将处理排队的工作。

与sched_garbage_collection()工作一样,工作线程由sched_signal_free()发出信号。

那么当需要轮询间隔时会是什么情况呢?信号似乎足够好,可以确保工作线程始终被踢出以处理工作。

共有1个答案

彭骏
2023-03-14

不需要轮询。它只是作为一个故障保险装置。我担心如果一个通知信号丢失会有什么后果。当然,这将是一个bug。由于我不知道有这样的bug,我不得不说,轮询是不必要的,而且浪费了CPU周期。

另一个问题是民意测验的默认率,据我所知,这是50%的,这是一个比率较高的活动,也是最高优先级的任务。你可以设定一个低得多的比率。如果您想添加一个选项来禁用轮询,那也是一件好事。

 类似资料:
  • 上下文:我正在设计一个应用程序,它将使用来自各种Amazon SQS队列的消息。(超过25个队列)为此,我正在考虑创建一个库来使用队列中的消息(称为MessageConsumer) 我希望根据队列中的流量动态分配线程来接收/处理来自不同队列的消息,以最大限度地减少资源浪费。我有两种方法可以做这件事。 1)只能有一种类型线程轮询队列、接收消息并处理这些消息,且所有队列都有一个公共线程池。2)可以有单

  • 问题 你有一个线程队列集合,想为到来的元素轮询它们, 就跟你为一个客户端请求去轮询一个网络连接集合的方式一样。 解决方案 对于轮询问题的一个常见解决方案中有个很少有人知道的技巧,包含了一个隐藏的回路网络连接。 本质上讲其思想就是:对于每个你想要轮询的队列,你创建一对连接的套接字。 然后你在其中一个套接字上面编写代码来标识存在的数据, 另外一个套接字被传给 select() 或类似的一个轮询数据到达

  • 本文向大家介绍为什么需要在React.js中构建工作流程,包括了为什么需要在React.js中构建工作流程的使用技巧和注意事项,需要的朋友参考一下 在做下面的事情时建立工作流程帮助 它优化代码 使用下一代JavaScript(ES6) 这是单页/多页应用程序的标准方法 生产方法 轻松将依赖项与NPM或Yarn集成 使用打包器(如Web-pack)来简化模块化代码和运输代码 像Babel这样的预编译

  • 我不明白Laravel和Laravel 我可以看到: 队列:收听给定队列 工作:处理队列上的下一个作业 但是仍然没有得到它,因为我已经尝试了两者,如果有任何新的队列,两者都将运行队列(工作选项不只是运行一次) 我不是在说守护进程选项。就这两个。

  • 本文向大家介绍为什么要使用 kafka,为什么要使用消息队列?相关面试题,主要包含被问及为什么要使用 kafka,为什么要使用消息队列?时的应答技巧和注意事项,需要的朋友参考一下 缓冲和削峰:上游数据时有突发流量,下游可能扛不住,或者下游没有足够多的机器来保证冗余,kafka在中间可以起到一个缓冲的作用,把消息暂存在kafka中,下游服务就可以按照自己的节奏进行慢慢处理。 解耦和扩展性:项目开始的