未知类型名称 "pthread_barrier_t"

unknown type name "pthread_barrier_t"

我正在尝试在 C 中并行化一个算法。我想使用 pthread_barrier_t 但我的 Ubuntu wsl 出于某种原因找不到它。我有 pthread.h 包括在内,我可以使用其余的 pthread 函数。 libthread.a 已安装。

#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>

/* Error occurs here */
pthread_barrier_t barrier;

准确的错误是:"identifier pthread_barrier_t is undefined"

我在别处看到它可能是我正在编译的方式。

编译如下:

gcc -o test test.c -Wall -std=c99 -lpthread -lm

此外,VS Code 无法识别函数。

问题出在您的 -std=c99 选项上。使用严格的 C 模式会禁用一堆东西,包括阻止 pthread_barrier_t 被定义的东西。如果您改用 -std=gnu99,它应该可以编译。 (在 WSL 的 Ubuntu 16.04 上测试)。

或者,添加

#define _XOPEN_SOURCE 600 /* Or higher */

#define _POSIX_C_SOURCE 200112L /* Or higher */

源中的第一个 #include 之前。有关这些宏的可接受值和更多信息,请参阅 man 7 feature_test_macros