gpt4 book ai didi

c - 在信号量(操作系统)中传递给 sem_init() 的参数的含义是什么?

转载 作者:行者123 更新时间:2023-12-02 01:20:03 24 4
gpt4 key购买 nike

考虑下面给出的代码片段:

    #include <pthread.h>
#include <semaphore.h>

sem_t empty;
sem_t full;
sem_t mutex;

int main(int argc, char *argv[])
{
int MAX = 10;//Size of the Buffer
sem_init(&empty, 0, MAX);
sem_init(&full, 0, 0);
sem_init(&mutex, 0, 1);

return 0;
}

只有需要的代码,我上面已经提到了。它是生产者-消费者代码的一部分。 sem_init()中各个参数的含义是什么?我可以看出第一个参数是信号量变量的地址,第三个参数是它的值。

为什么第二个参数总是0?这是什么意思?

我们是否使用第二个参数指定等待信号量的临界值?

    wait(S) {
while (S <= 0 )
; // busy wait
S--;
}

如果我将 3 作为第二个参数传递给 sem_init(),wait(S) 中的 while 循环是否会更改为

while (S <= 3 )

像这样吗?

最佳答案

总是尝试阅读 Linux 文档 ( man <command or system_call> ) 以解决这些类型的疑问。

针对您的案例 man sem_init
sem_init() 在指向的地址初始化未命名的信号量 到 sem。 value 参数指定的初始值 信号。

网站 link手册页的

关于c - 在信号量(操作系统)中传递给 sem_init() 的参数的含义是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40634116/

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