- 10
- 0
- 约2.64千字
- 约 4页
- 2017-04-23 发布于重庆
- 举报
任务2-Peterson算法解决临界问题
基本信息
实践题目:Peterson算法解决临界问题
完成人:
班级姓名:陈杨
学号:0706230101
报告日期 :2011年1月5日
实践内容简要描述
实践目标
1.理解临界区问题
2.掌握Peterson算法以解决临界区问题
实践内容
协作线程——兄弟问题
设置竞争条件:
定义两个全局变量:accnt1和accnt2,初值都为零;
创建两个线程acc1和acc2;
(1)获得一个随机数
(2)从accnt1减去这个随机数;
(3)将这个随机数加到accnt2中;
(4)正确的话,accnt1+accnt2=0;
(5)但在未实现线程互斥的情况下,accnt1+accnt2可能不为0。
用软件方法实现协作线程,以解决以上临界区问题——兄弟问题。
可采用Peterson算法或Dekker算法。
设计思路
利用Peterson算法,实现线程间的互斥。
boolean flag[2];//初值false
int turn;
do{
flag[i]:=true;
turn=j;
while(flag[j] and turn=j);
临界区;
flag[i]=false;
剩余区;
}while(1);
i为线程自身的序号减去1,j为2减去该线程的序号。
当某一进程试图访问临界区时,若另一进程已在访问临
原创力文档

文档评论(0)