永发信息网

一个关于linux的信号量集的问题

答案:1  悬赏:20  手机版
解决时间 2021-04-15 00:09
  • 提问者网友:伴风望海
  • 2021-04-14 11:25
#include<sys/sem.h>
#include<sys/ipc.h>
#include<stdio.h>
union semun{
int val;
struct semid_ds *buf;
unsigned short *array;
}
main()
{
int semid;
semid=semget(IPC_PRIVATE,2,IPC_CREAT|0666);
union semun sem,sem2;
sem.val=1;
sem2.val=0;
semctl(semid,0,SETVAL,sem);
semctl(semid,1,SETVAL,sem2);
if(fork()==0)
{int i;
struct sembuf sops={0,+1,IPC_NOWAIT},sops2={1,-1,IPC_NOWAIT};
for(i=0;i<1000;i++)
{
semop(semid,&sops,1);
printf("a\n");
semop(semid,&sops2,1);
}
}
else
{
int j;
struct sembuf sops={0,-1,IPC_NOWAIT},sops2={1,+1,IPC_NOWAIT};
for(j=0;j<1000;j++)
{
semop(semid,&sops2,1);
printf("b\n");
semop(semid,&sops,1);
}
}
}
最佳答案
  • 五星知识达人网友:一叶十三刺
  • 2021-04-14 12:30
会死锁。。。。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯