线程中的信号量
信号量
poxis 标准
创建初始化
#include <semaphore.h>
int sem_init(sem_t *sem, int pshared, unsigned int value);
Link with -pthread.
入口:
sem带初始化的信号量的地址pshared线程-0 进程value信号的初始值 大于等于0即可
返回:
- 0-正常
- -1-非正常
P操作
#include <semaphore.h>
int sem_wait(sem_t *sem);
int sem_trywait(sem_t *sem);
int sem_timedwait(sem_t *sem, const struct timespec *abs_timeout);
Link with -pthread.
sem_wait
功能:
- 减少信号量的值,
- 如果当前信号量值为0,调用时会阻塞,直到信号量大于0
入口:
sem_t信号量
返回:
- 0-正常
- -1-非正常
V操作
函数原型:
#include <semaphore.h>
int sem_post(sem_t *sem);
Link with -pthread.
功能:
- 增加信号量的值
入口:
sem-信号量
出口:
- 0-正常
- -1-非正常
销毁
函数原型:
#include <semaphore.h>
int sem_destroy(sem_t *sem);
Link with -pthread.
功能:
- 销毁一个信号量
入口:
sem-信号量
出口:
-
0-正常
-
-1-非正常

浙公网安备 33010602011771号