信号量
概要
| API | note |
|---|
sem_open | 创建信号量 |
sem_close | 关闭信号量 |
sem_destroy | 销毁匿名信号量 |
sem_unlink | 销毁有名信号量 |
sem_getvalue | 获取信号量的值 |
sem_init | 初始化匿名信号量 |
sem_post | 解锁操作 |
sem_wait | 锁定号量 |
sem_trywait | 尝试锁定信号量 |
sem_timedwait | 尝试锁定特定时间的信号量 |
附件
/**
* @brief open 打开文件, 返回文件描述符
* @return int 成功返回0, 失败返回-1
*/
sem_t *sem_open(const char *name, int oflag, ...);
/**
* @brief omit
*
* @param sem omit
* @return int 成功返回0, 失败返回1
*/
int sem_close(sem_t *sem);
/**
* @brief omit
*
* @return int 成功返回0, 失败返回1
*/
int sem_destroy(sem_t *);
/**
* @brief omit
*
* @param name omit
* @return int 成功返回0, 失败返回1
*/
int sem_unlink(const char *name);
/**
* @brief omit
*
* @param sem omit
* @param sval omit
* @return int 成功返回0, 失败返回1
*/
int sem_getvalue(sem_t *restrict sem, int *restrict sval);
/**
* @brief omit
*
* @param sem omit
* @param pshared omit
* @param value omit
* @return int 成功返回0, 失败返回1
*/
int sem_init(sem_t *sem, int pshared, unsigned value);
/**
* @brief omit
*
* @param sem omit
* @return int (加操作), 解锁信号量
*/
int sem_post(sem_t *sem);
/**
* @brief (减操作), 如果当前值为0, 则阻塞直到 sem_post 被调用
*
* @param sem omit
* @return int 成功返回0, 失败返回1且信号值不变
*/
int sem_wait(sem_t *sem);
/**
* @brief omit
*
* @param sem omit
* @return int 成功返回0, 失败返回1且信号值不变
*/
int sem_trywait(sem_t *sem);
/**
* @brief 如果在等待的时间内信号量不为0则返回成功, 否则返回失败
*
* @param sem omit
* @param abstime omit
* @return int 成功返回0, 失败返回1且信号值不变
*/
int sem_timedwait(sem_t *restrict sem, const struct timespec *restrict abstime);