当前位置: 技术问答>linux和unix
一道ipc的题目
来源: 互联网 发布时间:2016-03-08
本文导语: 一座独木桥,只允许单方向过人,同一方向的人可以连续过桥,用记录型信号量应该怎么做。 还有一个就是有没有专门IPC问题这方面的文章,小弟想研究一下。。。 | 这个需要知道桥上面站...
一座独木桥,只允许单方向过人,同一方向的人可以连续过桥,用记录型信号量应该怎么做。
还有一个就是有没有专门IPC问题这方面的文章,小弟想研究一下。。。
还有一个就是有没有专门IPC问题这方面的文章,小弟想研究一下。。。
|
这个需要知道桥上面站多少人,并且需要有方向量的指示和,桥上面的空闲位置(首尾指针)。这些最基本的信息
可以定义结构
typedef struct
{
int semid;//信号量ID
unsigned char cDirect;//指示方向
unsigned short usFront;//指示过桥队伍前面的人的位置
unsigned short usTail;//只是过桥队伍后面人的位置。
}Bridge_Struct;
可以定义结构
typedef struct
{
int semid;//信号量ID
unsigned char cDirect;//指示方向
unsigned short usFront;//指示过桥队伍前面的人的位置
unsigned short usTail;//只是过桥队伍后面人的位置。
}Bridge_Struct;
|
是不是这样的?
一个桥有a、b两端
一个人要从a到b,它就先看btoa变量的值
如果btoa==0,说明正在从b走向a的有0个人,他可以过桥。
于是他马上给atob=atob+1,然后开始过桥,过完桥时再给atob=atob-1
要是btoa!=0,说明正在有人从b往a过桥,则他要等待,一直等到btoa==0.
从b到a的也是类似嘛。
一个桥有a、b两端
一个人要从a到b,它就先看btoa变量的值
如果btoa==0,说明正在从b走向a的有0个人,他可以过桥。
于是他马上给atob=atob+1,然后开始过桥,过完桥时再给atob=atob-1
要是btoa!=0,说明正在有人从b往a过桥,则他要等待,一直等到btoa==0.
从b到a的也是类似嘛。