信号量用来保护共享资源,常用信号量函数如下:
int sem_init(sem_t *sem,int pshared,unsigned int value);
int sem_destroy(sem_t *sem);
int sem_wait(sem_t *sem);
int sem_trywait(sem_t *sem);
int sem_post(sem_t *sem);
int sem_getvalue(sem_t *sem);
sem_trywait函数不会阻塞,如果不能获得信号量会立即返回,sem_wait和sem_post分别控制信号量的值,也就是对应p和v操作。两者均是原子操作。
定义如下:
#include <semaphore.h>
int sem_wait(sem_t * sem);
int sem_post(sem_t * sem);
sem_destroy用来释放信号量.以上这些函数成功时候返回0.