3

我已经编写了一些在条件变量上使用定时等待的 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 实现,那么为什么我需要明确指定这些路径才能使用这个函数呢?

只是这个函数需要我这样做:如果我忽略它,一切都可以编译和链接,而无需指定额外的路径(尽管代码的行为是不正确的)。

4

1 回答 1

1

据我所知,/usr/include 和 /usr/lib 中的 pthread 头文件和库分别是旧的 LinuxThreads 实现,我的假设是它们是为了向后兼容而存在的(即您应该针对旧接口构建) 但在运行时使用 NPTL 实现(它的接口是 LinuxThreads 接口的超集)。

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

于 2010-03-02T09:32:57.930 回答