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> | ||