gpt4 book ai didi

c - 为什么在struct中声明时会出现 'undeclared mutex'错误?

转载 作者:行者123 更新时间:2023-11-30 14:40:33 29 4
gpt4 key购买 nike

我正在使用信号量创建生产者和消费者文件以进行同步。我创建了一个定义 sem_t 变量的结构。 sem_t 变量之一是互斥体。 Mutex 代表互斥。但是,当我编译代码时出现错误,提示“互斥体”未声明。这对我来说并不重要,因为我认为我是在结构中声明它的。

我尝试将变量初始化为值 1 并使用其他方法来使用该变量,例如 sem_wait() 和 wait()。

#define BUFFER_SIZE 10
typedef struct{
int buffer[BUFFER_SIZE];
int in;
int out;
sem_t mutex;
sem_t cnt_filled;
sem_t cnt_empty;
} shm_structure;
/* pointer to shared memory object */
shm_structure *ptr;

ptr->in = ptr->out = 0;

fp = fopen("input.txt", "r");
//cnt_empty =
//mutex = 1;

do {
/* produce an item in next_produced */

while(((ptr-> in + 1) % BUFFER_SIZE) == ptr->out) {
; // do nothing
}

wait(cnt_empty);
wait(mutex);

if(fscanf(fp, "%d", &item) != EOF) {
ptr->buffer[ptr->in]= item;
printf("%s Read %d from the file\n", get_time(), item);
ptr->in = (ptr->in + 1) % BUFFER_SIZE; //increment tell the end of the file
} else {
break;
}

/* add next_produced into the buffer */

signal(mutex);
signal(cnt_filled);
//sem_post(mutex);
//sem_post(cnt_filled);

} while(1);

fclose(fp);

return 0;

我的代码编译时应该没有错误。这是我目前正在寻找的唯一结果。

最佳答案

当您声明结构时,您正在定义聚合数据类型。现在您需要创建该结构的实例,然后就可以访问该结构的成员。有关如何使用结构成员的基本示例:

typedef struct{
int x;
int y;
} my_struct;

my_struct my_instance_of_struct;
my_instance_of_struct.x = 1;

关于c - 为什么在struct中声明时会出现 'undeclared mutex'错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55483275/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com