📄 xhl.cpp
字号:
#include "xhl.h"SemClass::SemClass(){}SemClass::SemClass(key_t key,int mutex){ SemInit(key,mutex);}//初始化信号量//key信号量唯一的标识符//mutex共建立几个信号量void SemClass::SemInit(key_t key,int mutex){ m_pops=&m_ops; m_key=key; m_sem_id=semget(m_key,0,0); m_mutex=mutex; if(m_sem_id==-1) { m_sem_id=semget(m_key, m_mutex, IPC_CREAT|IPC_EXCL|0666); if(m_sem_id==-1) { perror("Create Semaphores Error"); exit(1); } }}//sem_num第几个信号量, 从零开始,到mutex-1//pv信号量初值,也就是资源数量void SemClass::SemSet(short sem_num,short pv){ PV(sem_num,pv);}void SemClass::P(short sem_num){ PV(sem_num,-1); }void SemClass::V(short sem_num){ PV(sem_num,1);}void SemClass::PV(short sem_num,short pv){ if(sem_num>=m_mutex) { perror("sem_num>mutex"); exit(1); } m_pops->sem_num=sem_num; m_pops->sem_op=pv; m_pops->sem_flg=0; if(semop(m_sem_id,m_pops,1)==-1) { perror("PV operation"); exit(1); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -