【问题标题】:Understanding pthreads a little more in C更多地了解 C 中的 pthread
【发布时间】:2014-08-29 09:49:29
【问题描述】:

所以我最近才听说这些 pthread,到目前为止我对它们的了解非常有限,但我只是想知道它是否能够在我真正了解它们之前做我想做的事情。

我编写了一个程序,它从微控制器生成两个输出脉冲,这些脉冲以不同的频率、周期和占空比发生。目前,输出脉冲的功能正在循环中发生,并且效果很好,因为我使用的时间是彼此的倍数,因此停止一个而不中断另一个并不是太麻烦。

但是我希望它更具动态性,这样我就可以轻松地更改占空比或周期,而不必针对这些时间创建一些特定的复杂循环......下面显示了我想要实现的目标的快速草图,我希望你能理解...

所以基本上我的问题是,C 语言中的 pthreads 是否可能发生这样的事情,即它们是否同时运行,所以在等待延迟完成时,一个可以脉冲打开和关闭?

如果没有,有什么我可以用来代替的吗?

【问题讨论】:

  • 什么是最大脉搏率以及您能承受多少抖动?
  • 只有在拥有多个核心/处理器的情况下,线程才能同时运行。对于单核线程,只能串行运行,不能并行。使用 pthreads 不会神奇地允许单个处理器同时运行多个指令序列。但是,如果一个线程正在等待(即实际上没有运行任何东西),那么另一个线程可以运行,但是当等待的线程需要唤醒和脉冲时,线程之间的上下文切换会产生开销。

标签: c pthreads signals simultaneous


【解决方案1】:

一般来说,在 uC 上使用线程来实现这样的功能是不值得的。对于这种有限的操作,额外的堆栈等成本是不值得的,它可能来自简单的 POV。

硬件计时器、中断和事件增量队列可能是您能做的最好的事情。

【讨论】:

    猜你喜欢
    • 2017-03-10
    • 1970-01-01
    • 2017-09-20
    • 2018-04-19
    • 2011-08-23
    • 1970-01-01
    • 2020-09-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多