This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC3220MOD:Pthread 和 FreeRTOS -任务处理

Guru**** 2551110 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/800166/cc3220mod-pthread-and-freertos---tasks-manipulation

器件型号:CC3220MOD

您好、社区

我们正在使用 FreeRTOS、目前正在尝试使用 POSIX 层。  

在我们看来,例如暂停和恢复一项任务,似乎不是直接的。 pthread_cancel 可用于暂停,但恢复它会怎么样?

我们是否遗漏了什么?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Vincent:

    pthread_cancel()不用于暂停线程,因为该函数旨在用作一个线程强制另一个线程退出的方法,并将彻底销毁已取消线程的上下文。 因此、没有用于取消取消线程的函数。
    我不认为明确暂停和恢复线程是最佳做法、但如果您的应用需要、我建议您查看此处的链接、了解如何有效地暂停和恢复线程:
    stackoverflow.com/.../what-is-the-best-solution-to-pause-and-resume-pthreads

    请告诉我您是否需要进一步澄清或对该主题有进一步的问题。

    此致、
    Michael
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Michael、

    是的、我同意这不是最佳做法。 但我无法找到更好的解决方案、您可能会这样做。
    这一问题引起了人们的关注(e2e.ti.com/.../2955724)
    我们将 CC3220用作基站、并侦听 UDP 端口。 因此、创建的任务仅用于侦听该端口、因此仅在站点已连接且套接字已正确启动后才需要启动该任务。 然后、如果工作站断开连接、则必须暂停该任务并正确关闭套接字。 等等...
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Vincent:

    我认为、对于您的应用、您不需要依赖外部线程暂停/取消/终止 UDP 侦听线程。 相反、您应该考虑让 UDP 任务关闭其自己的套接字、释放自己的资源、然后正常退出或返回。 当主线程检测到 Wi-Fi 断开等某些情况时、您可能需要使用由其设置的取消标志或信号量。 您的 UDP 侦听线程可以定期检查此标志,然后让它关闭其套接字,然后在检测到此情况后只需执行 return()即可退出。

    此致、
    Michael