?? 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 + -