在linux中编写进程问题,初始化信号量时出现bug

img


在linux中用c++编写进程间同步问题,用sem_init初始化信号量时出现图中问题,麻烦问一下这个该怎么解决啊
下图是这部分的代码

img

可以将错误的部分的代码先暂停一下,仔细看一下代码,尤其是注释部分。

在使用sem_init初始化信号量时,需要指定以下参数:

sem_t *sem_t_ptr:指向信号量结构体的指针。
int initial_value:信号量的初始值。
int buffer_size:信号量缓冲区的大小。
在上面的代码中,初始化信号量时指定了初始值为1,但是在初始化mutex时,指定了l这个参数。这可能会导致一个未定义的行为。

你可以尝试使用以下代码来解决这个问题:

sem_t mutex;  
sem_init(&mutex, 1, sem_init(NULL, 0, sem_init(&empty, 1, BUFFER_LEN)));  
sem_t sem;  
sem_init(&sem, 0, sem_init(NULL, 1, initial_value));  
sem_wait(&sem);  
sem_post(&mutex);  
sem_post(&sem);