gpt4 book ai didi

C 信号量值

转载 作者:行者123 更新时间:2023-11-30 17:38:15 25 4
gpt4 key购买 nike

我在理解以下代码示例的输出时遇到一些问题。

int main(int argc, char *argv[]) {
sem_t *mutex_init;
int i = 0, mutex_value;
mutex_init = sem_open("/Semaphore", O_CREAT, 0644, 1);
for(i = 0; i < 10; i++) {
if(sem_getvalue(mutex_init, &mutex_value) < 0) {
perror("sem_getvalue() failed");
exit(EXIT_FAILURE);
}
printf("mutex_value: %d\n",mutex_value);fflush(stdout);
if(sem_wait(mutex_init) < 0) {
perror("sem_wait() failed");
exit(EXIT_FAILURE);
}
if(sem_getvalue(mutex_init, &mutex_value) < 0) {
perror("sem_getvalue() failed");
exit(EXIT_FAILURE);
}
printf("mutex_value: %d\n",mutex_value);fflush(stdout);
if(sem_post(mutex_init) < 0) {
perror("sem_post() failed");
exit(EXIT_FAILURE);
}
printf("mutex_value: %d\n",mutex_value);fflush(stdout);
printf("------\n");
}
return EXIT_SUCCESS;
}

我得到了以下输出

    mutex_value: 1
mutex_value: 0
mutex_value: 0
------
mutex_value: 1
mutex_value: 0
mutex_value: 0

但期待类似的事情

    mutex_value: 1
mutex_value: 0
mutex_value: 1
-------
...

我不确定,但这也许是因为“缓冲输出”或其他原因?

感谢您的帮助。

最佳答案

您没有在 sem_post 之后调用 sem_getvalue,因此 mutex_value 具有过时的值。

关于C 信号量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22178966/

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