当前位置:首页 > 山东大学操作系统实验六报告死锁问题
sem_id = id; }
Sema::~Sema(){ }
int Sema::down() {
struct sembuf buf;
buf.sem_op = -1;
buf.sem_num = 0;
buf.sem_flg = SEM_UNDO;
if((semop(sem_id,&buf,1)) <0) {
perror(\
exit(EXIT_FAILURE); }
return EXIT_SUCCESS; }
int Sema::up() {
Sem_uns arg;
struct sembuf buf;
buf.sem_op = 1;
buf.sem_num = 0;
buf.sem_flg = SEM_UNDO;
if((semop(sem_id,&buf,1)) <0) {
perror(\
exit(EXIT_FAILURE); }
return EXIT_SUCCESS; }
Lock::Lock(Sema * s) { sema = s;
}
Lock::~Lock(){ } //上锁
void Lock::close_lock() {
sema->down(); } //开锁
void Lock::open_lock() {
sema->up();
共分享92篇相关文档