Связывание с NPTL для функции pthread pthread_condattr_setclock - PullRequest
3 голосов
/ 01 марта 2010

Я написал некоторый код 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 Ответ

1 голос
/ 02 марта 2010

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

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

...