马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
POSIX信号量
信号量分为匿名信号量和具名信号量两种
匿名信号量
sem_init函数
该函数可以对POSIX匿名信号量进行初始化。- int sem_init(sem_t *sem,int pshared,unsigned int value)
- //sem:由sem指向的匿名信号量的地址
- //pshared:该值为0,信号在进程的线程中共享;非0表示信号在进程之间共享,应该位于共享内存中
- //value:匿名信号量的值由参数value进行初始化
- //ret:成功返回0;失败返回-1,并返回错误码
复制代码 sem_wait函数
该函数相称于p操作,体现要申请信号量,此函数有阻塞特性- int sem_wait(sem_t *sem)
- //sem:由它指向的信号量
- //ret:成功返回0,失败返回错误码
复制代码 sem_trywait函数
该函数相称于p操作,体现要申请信号量,此函数没有阻塞特性- int sem_trywait(sem_t *sem)
- //sem:由它指向的信号量
- //ret:成功返回0,失败返回错误码
复制代码 sem_timedwait函数
该函数相称于p操作,体现要申请信号量,此函数会等待一段时间- struct timespec {
- time_t tv_sec; // 秒
- long tv_nsec; // 纳秒(范围为0到999,999,999)
- };
- int sem_timedwait(sem_t *sem,const struct timespec *abs_timeout)
- //sem:由它指向的信号量
- //abs_timeout:指向一个struct timespec类型的指针,表示绝对超时时间
- //ret:成功返回0,失败返回错误码
复制代码 sem_post函数
此函数可以解锁一个信号量,相称于v操作- int sem_post(sem_t *sem)
- //sem:由它指向的信号量
- //ret:成功返回0,失败返回错误码
复制代码 具名信号量
sem_open函数
此函数可以创建或者打开POSIX具名信号量- sem_t *sem_open(const char *name, int oflag);
- sem_t *sem_open(const char *name, int oflag, mode_t mode, unsigned int value);
- //name:指定信号量的名称
- //oflag:操作标志:O_CREAT、O_EXCL
- //mode:创建的信号量的权限
- //value:创建的信号量的初值
- //ret:成功返回信号量的地址,失败返回SEM_FAILED
复制代码 sem_wait函数
该函数相称于p操作,体现要申请信号量,此函数有阻塞特性- int sem_wait(sem_t *sem)
- //sem:由它指向的信号量
- //ret:成功返回0,失败返回错误码
复制代码 sem_trywait函数
该函数相称于p操作,体现要申请信号量,此函数没有阻塞特性- int sem_trywait(sem_t *sem)
- //sem:由它指向的信号量
- //ret:成功返回0,失败返回错误码
复制代码 sem_timedwait函数
该函数相称于p操作,体现要申请信号量,此函数会等待一段时间- struct timespec {
- time_t tv_sec; // 秒
- long tv_nsec; // 纳秒(范围为0到999,999,999)
- };
- int sem_timedwait(sem_t *sem,const struct timespec *abs_timeout)
- //sem:由它指向的信号量
- //abs_timeout:指向一个struct timespec类型的指针,表示绝对超时时间
- //ret:成功返回0,失败返回错误码
复制代码 sem_post函数
此函数可以解锁一个信号量,相称于v操作- int sem_post(sem_t *sem)
- //sem:由它指向的信号量
- //ret:成功返回0,失败返回错误码
复制代码 sem_close函数
此函数可以关闭一个信号量- int sem_close(sem_t *sem)
- //sem:由它指向的信号量
- //ret:成功返回0,失败返回错误码
复制代码 sem_unlink函数
此函数可以实现删除POSIX具名信号量- int sem_unlink(const char *name)
- //name:由它指定的信号量
- //ret:成功返回0,失败返回错误码
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |