请大佬讲解一下这是怎么设置的互斥,尤其讲一下semctl的作用。求求了!
#define mutex 5
int chopstick[5] = {0,1,2,3,4};
int sem_id = -1;
if((sem_id = semget(IPC_PRIVATE,6,0600)) < 0)
{
perror("创建信号量失败\n");
exit(1);
}
if(semctl(sem_id,mutex,SETVAL,1) == -1)
{
perror("sem赋值失败\n");
exit(1);
}
for(i=0;i<5;i++){
if(semctl(sem_id,chopstick[i],SETVAL,1) == -1)
{
perror("sem赋值失败\n");
exit(1);
}
}