sem_t resource_sem, read_sem = 3; [Error] invalid conversion from 'int' to 'sem_t {aka void*}' [-fpermissive]
时间: 2023-07-12 11:08:50 浏览: 69
这个错误是因为 `read_sem` 被赋值为 3,而 `sem_t` 类型是一个指向不透明信号量结构体的指针类型,不能直接赋值为整数。正确的方式应该是使用 `sem_init()` 函数来初始化信号量,例如:
```c
#include <semaphore.h>
sem_t resource_sem;
sem_t read_sem;
int main() {
sem_init(&resource_sem, 0, 1); // 初始化资源信号量为1
sem_init(&read_sem, 0, 3); // 初始化读信号量为3
return 0;
}
```
这样可以创建两个信号量,并且将 `resource_sem` 初始化为1,`read_sem` 初始化为3。
阅读全文