【问题标题】:Linux RT Preempt - Are POSIX threads required?Linux RT Preempt - 是否需要 POSIX 线程?
【发布时间】:2017-10-27 19:24:40
【问题描述】:

我已经阅读了this example 并浏览了this wiki 关于使用 PREEMPT 修补内核进行实时应用程序开发的内容。前者使用 POSIX 线程,后者仅引用 PTHREAD_PRIO_INHERIT 互斥锁的需要。

所以我没有看到任何说我明确需要 POSIX 线程来利用 PREEMPT 补丁的内容,但它似乎以某种方式被建议。如果我实现了本机 C++11 线程或 boost 线程,我还能从 PREEMPT 补丁中受益吗?

谢谢

【问题讨论】:

  • 顺便提一下,上次我尝试在 g++ 中使用 C++11 线程时,IIRC 无论如何我都需要链接 libpthread。
  • 这是真的,所以我倾向于认为 C++11 线程可能还可以,但这不过是一种预感。

标签: linux multithreading c++11 real-time


【解决方案1】:

迟到的答案,但仍然......

在 Linux(和其他 Unix 系统)上,C++ 标准线程通常在 pthread 之上实现。 C++ 接口通常更加类型安全和方便,但对于某些事情,您需要原始 Posix 接口。例如,优先级继承互斥锁和一些线程调度设置(至少)不能用于 std::threads。我有时会欺骗和混合 Posix 原语和 std::thread 原语,它对我有用。

【讨论】:

    【解决方案2】:

    在 POSIX 系统上,std::thread::native_handle() 可用于访问底层 pthread。请参见此处的示例: https://en.cppreference.com/w/cpp/thread/thread/native_handle

    【讨论】:

      猜你喜欢
      • 2015-09-15
      • 2021-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多