【发布时间】:2014-07-13 04:53:48
【问题描述】:
我想在一个项目中使用信号量,但我被困在这里。我编写了三个程序,用于在所有三个程序的关键区域打印一条语句,以查看信号量如何进行同步。没有输出,程序进入睡眠状态。这是代码-
int main()
{
int fd,ret,kk,x=1,y=2;
struct sembuf sem[2]={{0,-1,SEM_UNDO},
{0,1,SEM_UNDO}};
union semun a;
a.val=1;
kk=semget(1234,1,IPC_CREAT);
semctl(kk,0,SETVAL);
semop(kk,&sem[0],1);
printf("In client1...\n");
printf("In client1...\n");
sleep(3);
semop(kk,&sem[1],1);
}
我制作了这个程序 client2 和 client3 的 2 个副本。
【问题讨论】: