嗨很抱歉发布了一大堆代码,但我是C代码的新手,基本上我正在做大学的任务,我必须实现一个"pthread_barrier",现在我理解了障碍的概念(或者在至少我认为我这样做但是我只是不确定我应该把它放在哪里.作业说明:
"使用pthread_barrier_init和pthread_barrier_wait确保所有生产者/消费者线程同时开始生产/消费."
顺便说一下,这是作业的额外学分
#include <pthread.h>
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#define SIXTY_SECONDS 60000000
#define ONE_SECOND 1000000
#define RANGE 10
#define PERIOD 2
typedef struct {
int *carpark;
int capacity;
int occupied;
int nextin;
int nextout;
int cars_in;
int cars_out;
pthread_mutex_t lock;
pthread_cond_t space;
pthread_cond_t car;
pthread_barrier_t bar;
} cp_t;
/* Our producer threads will each execute this function */
static void *
producer(void *cp_in)
{
cp_t *cp;
unsigned int seed;
/* Convert what was passed in to a pointer …Run Code Online (Sandbox Code Playgroud) 我正在尝试用 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;
Run Code Online (Sandbox Code Playgroud)
确切的错误是:“标识符 pthread_barrier_t 未定义”
我在其他地方看到这可能是我编译的方式。
编译如下:
gcc -o test test.c -Wall -std=c99 -lpthread -lm
Run Code Online (Sandbox Code Playgroud)
另外,VS Code 无法识别该函数。