linux posix信号量使用疑问
首先用一个进程创建信号量,初始值设置为1,两个进程使用这个信号量访问共享资源:
- C/C++ code
// Create semaphoresem_t * sem;sem = sem_open( SEM_NAME, OPEN_FLAG, OPEN_MODE, 1 );if( SEM_FAILED == sem ){ fprintf(stdout, "ERROR: Create semaphore...\n"); exit(0);}两个进程使用上述创建的信号量
process1:
- C/C++ code
sem_t * sem = sem_open(SEM_NAME, 0);if(sem != SEM_FAILED){ sem_wait(sem);}// some operationsem_post(sem);usleep(500000);process2:
- C/C++ code
sem_t * sem = sem_open(SEM_NAME, 0);if(sem != SEM_FAILED){ sem_wait(sem);}// some operationsem_post(sem);usleep(300000);我的问题是:这两个进程可以同时获取信号量。我明明在创建的时候把信号量的值设置成1了啊。
[解决办法]