测试 x_np pthread 函数的可用性 - C/C++

Test Availability of x_np pthread Functions - C/C++

本文关键字:可用性 C++ 函数 np pthread 测试      更新时间:2023-10-16

我正在基于 pthread API 编写一个用于 C 线程的辅助库。有许多 pthread 函数是非标准的 GNU 扩展,例如 pthread_set_affinity_nppthread_clear_exit_nppthread_set_qos_class_self_np 等。

有什么方法可以使用宏来测试这些非可移植功能是否可用,而无需查找哪些操作系统定义了什么?

这正是人们使用 Autoconf 来解决的问题。 例如,在您的configure.ac文件中像这样的 sinppet:

AC_CHECK_DECLS(
  [pthread_attr_setaffinity_np, pthread_clear_exit_np, pthread_set_qos_class_self_np],
  [], [], [[#include <pthread.h>]])

将定义宏HAVE_DECL_PTHREAD_ATTR_SETAFFINITY_NPHAVE_DECL_PTHREAD_CLEAR_EXIT_NPHAVE_DECL_PTHREAD_SET_QOS_CLASS_SELF_NP,定义为0声明不存在或1如果声明不存在。