Связывание с NPTL для функции pthread pthread_condattr_setclock

Я написал некоторый код pthread, который использует временные ожидания для условной переменной, но для обеспечения относительного ожидания я установил тип часов condvar в CLOCK_MONOTONIC, используя pthread_condattr_setclock().

Чтобы скомпилировать и связать pthread_condattr_setclock () на RHEL4, мне пришлось добавить -I/usr/include/nptl и -L/usr/lib/nptl в мою командную строку gcc. Насколько я понимаю, ядро ​​2.6 (которое есть в RHEL4) использует реализацию NPTL pthread по умолчанию, поэтому зачем мне явно указывать эти пути, чтобы использовать эту функцию?

Только эта функция требует от меня: если я ее опущу, все компилируется и связывается нормально без указания дополнительных путей (хотя поведение кода в этом случае некорректно).

1 ответ

Решение

Из того, что я смог выяснить, заголовок и библиотека pthread в /usr/include и /usr/lib, соответственно, являются старыми реализациями LinuxThreads, и я предполагаю, что они существуют для обратной совместимости (то есть вы должны использовать старый интерфейс) но во время выполнения используется реализация NPTL (которая имеет интерфейс, являющийся надмножеством интерфейса LinuxThreads).

Следовательно, вы можете использовать новый интерфейс NPTL (т.е. если вам требуется дополнительная функциональность), если вы знаете, что он вам нужен, и, что особенно важно, вы знаете, что интерфейс NPTL будет доступен во время выполнения.

Другие вопросы по тегам