关于多线程:Linux RT Preempt – 是否需要 POSIX 线程?

Linux RT Preempt - Are POSIX threads required?

我已通读此示例并浏览此 wiki,了解使用 PREEMPT 修补内核进行实时应用程序开发。前者使用 POSIX 线程,后者仅引用 PTHREAD_PRIO_INHERIT 互斥锁的需要。

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

谢谢


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


迟到的答案,但仍然……

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