2010-03-01 21 views
3

我寫了一些pthread代碼,它們在條件變量上使用定時等待,但爲了確保相對等待,我使用pthread_condattr_setclock()將condvar的時鐘類型設置爲CLOCK_MONOTONIC。針對pthread函數的NPTL鏈接pthread_condattr_setclock

爲了在RHEL4上編譯和鏈接pthread_condattr_setclock(),我必須在我的gcc命令行中添加-I/usr/include/nptl和-L/usr/lib/nptl。我的理解是,2.6內核(RHEL4有)默認使用NPTL pthread實現,爲什麼我需要明確指定這些路徑才能使用此函數?

只有這個函數需要我這樣做:如果我不寫,所有東西都編譯並鏈接正常,沒有指定額外的路徑(儘管代碼的行爲不正確)。

回答

1

從我所能找到的,分別在/ usr/include和/ usr/lib中的pthread頭文件和庫是舊的LinuxThreads實現,我的假設是它們存在向後兼容性(即,您應該構建針對舊接口),但在運行時使用NPTL實現(其接口是LinuxThreads接口的超集)。

因此,如果您知道需要它,並且至關重要的是,您知道NPTL接口在運行時可用,那麼您只能使用新的NPTL接口(即,如果您需要某些附加功能)。