首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

linux posix信号量施用疑问

2012-08-15 
linux posix信号量使用疑问首先用一个进程创建信号量,初始值设置为1,两个进程使用这个信号量访问共享资源:

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了啊。

[解决办法]
探讨

是先调用了sem_wait啊,应该是第一个进程process1获得信号量以后,执行动作,释放信号量,休眠500毫秒,然后process2获得信号量,执行动作,释放信号量休眠300毫秒。

实际执行的时候,两个进程可以同时获取信号量,搞不懂啊,我是创建了一个二值的信号量啊。

热点排行