91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

代碼實現了共享內存和信號量的結合,實現進程間通信及其同步問題。通過此代碼可以理解共享內存及信號量基本函數的使用及實現原理。

資源截圖

代碼片段和文件信息

#include?“semtest.h“

static?int?comm_sem(?int?numsint?semflag)
{

????key_t?key?=?ftok(SEM_PATHNAMESEM_PROJ_ID);
????if(key?????{
????????perror(“ftok“);
????????return?-1;
????}

????int?semid?=?semget(key?nums?semflag);
????if(semid?????{
????????perror(“semget“);
????????return?-1;
????}

????return?semid;

}


int?create_sems(int?nums)
{
????return?comm_sem(numsIPC_CREAT|IPC_EXCL|666);

}

int?get_sems(int?nums)
{
????return?comm_sem(numsIPC_CREAT);
}

union?semun{
????int?val;
????struct?semid_ds?*buf;
????unsigned?short?*array;
????struct?seminfo?*?__buf;
};


int?init_sems(int?semid?int?which?int?value)
{
????union?semun?_semun;
????_semun.val?=?value;
????int?ret?=?semctl(semidwhichSETVAL_semun);
????if(ret?????{
????????perror(“init_sem“);
????????return?-1;
????}
????return?0;

}


int?destory_sems(int?semid)
{

????int?ret?=?semctl(semid0IPC_RMIDNULL);
????if(ret?<0)
????{
????????perror(“rm_sem“);
????????return?-1;
????}
????return?0;
}

static?int?comm_sem_op(int?semid?int?which?int?op)
{
????struct?sembuf?_sembuf;
????_sembuf.sem_num?=?which;
????_sembuf.sem_op?=?op;
????_sembuf.sem_flg?=?0;
????return?semop(semid&_sembuf1);
}

int?P(int?semidint?which)
{
????return?comm_sem_op(semidwhich-1);
}

int?V(int?semid?int?which)
{
????return?comm_sem_op(semidwhich1);
}


int?getnums(int?semidint?which){
????int?ret;
????int?value;
????union?semun?_semun;
????printf(“111?which?===?%d?value?===?%d\n“which_semun.val);
????ret?=?semctl(semidwhichGETVAL_semun.val);
????value?=?_semun.val;
????printf(“222?which?===?%d?value?===?%d\n“which_semun.val);

????return?ret;
}




























































評論

共有 條評論