This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
realtime:documentation:howto:applications:application_base [2023/08/29 07:45] kaiwan Add a section on leveraging the capabilities model to run the RT app as non-root (continued) |
realtime:documentation:howto:applications:application_base [2024/05/31 15:54] (current) alison [Scheduling and priority] |
||
---|---|---|---|
Line 30: | Line 30: | ||
the pthread attributes and not to use the inherit scheduling of the | the pthread attributes and not to use the inherit scheduling of the | ||
thread which created the real-time thread. | thread which created the real-time thread. | ||
+ | </wrap> | ||
+ | - **Problems with pthread condition variables** \\ <wrap> | ||
+ | Multithreaded applications which rely on glibc's libpthread are prone to unexpected latency delays since its condition variable implementation does not honor priority inheritance ([[https://sourceware.org/bugzilla/show_bug.cgi?id=11588|bugzilla]]). Unfortunately glibc's DNS resolver and asynchronous I/O implementations depend in turn on these condition variables. | ||
+ | [[https://github.com/dvhart/librtpi|librtpi]] is an alternative LGPL-licensed pthread implementation which supports priority inheritance, and whose API is as close to glibc's as possible. The alternative [[https://www.musl-libc.org/|MUSL libc]] has a pthread condition variable implementation similar to glibc's. | ||
</wrap> | </wrap> | ||