0
我在理解下面的代碼示例的輸出時遇到了一些問題。C信號量值
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
-------
...
蔭不知道,但也許這是因爲「緩衝輸出」或別的什麼嗎?
感謝您的幫助。
哦。謝謝。我很尷尬。 :) – user3229664