链接NPTL for pthread函数pthread_condattr_setclock

时间:2010-03-01 14:31:06

标签: posix pthreads redhat rhel nptl

我编写了一些在条件变量上使用定时等待的pthread代码,但为了确保相对等待,我使用pthread_condattr_setclock()将condvar的时钟类型设置为CLOCK_MONOTONIC。

为了在RHEL4上编译和链接pthread_condattr_setclock(),我必须将-I / usr / include / nptl和-L / usr / lib / nptl添加到我的gcc命令行。我的理解是2.6内核(RHEL4有)默认使用NPTL pthread实现,为什么我需要明确指定这些路径才能使用这个函数?

只有这个函数需要我这样做:如果我把它留下来,一切都编译好并且没有指定额外的路径就链接好了(虽然代码的行为是不正确的)。

1 个答案:

答案 0 :(得分:1)

从我能够找到的,/ usr / include和/ usr / lib中的pthread头和库分别是旧的LinuxThreads实现,我的假设是它们是为了向后兼容性(即你应该构建旧的接口)但在运行时使用NPTL实现(其接口是LinuxThreads接口的超集)。

因此,您只能使用新的NPTL接口(即如果您需要一些额外的功能),如果您知道需要它,并且至关重要的是,您知道NPTL接口将在运行时可用。