24小时热门版块排行榜    

查看: 1931  |  回复: 5
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

wahaha2000

铜虫 (小有名气)

[求助] 请教一个while loop程序的问题

程序的代码如下:


int turn;
boolean flag[2];

do {
     flag=TRUE;
     turn=j;
     while ( flag && turn==j);

         critical section
     
     flag = false;

         remainder section


} while (TRUE);


这是Abraham Siberschatz等写的《操作系统概念(第七版 影印版)》第196页的代码。
我想问的是:语句
while ( flag && turn==j);
有什么作用?我在谭浩强的C语言书和《C语言参考手册》中没找到合适的解答?
非常感谢!
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wahaha2000

铜虫 (小有名气)

非常感谢两位虫友的回答。我想问的是:
这个

【while ( flag && turn==j);】

语句应该是C语言中的,但我看到的两本C语言书(谭浩强的C语言书和《C语言参考手册》)中好像没这种用法,我想能不能给我推荐一本有这种用法的C语言书,我仔细去推敲推敲。

本人学数学的,刚拿了本操作系统书看,问的问题有点初级,非常抱歉!
4楼2011-06-09 21:24:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 6 个回答

huycwork

金虫 (著名写手)

【答案】应助回帖

wahaha2000(金币+1): 非常感谢 ! 2011-06-09 22:47:22
这个是系统的互斥锁吧,你用谭浩强教的东西怎么能学到这种东西呃~
flag是一个互斥锁,需要进入临界区的进程都把自己的锁设置为true
这里只假设有两个进程,进程1需要进入临街区时就把自己的开关打开,然后去检查另外一个锁,这里分三种情况:
1.另外一个锁被打开了
2.两个进程同时在竞争,本进程竞争失败
3.本进程竞争成功
只有情况3才进入临界区。情况1是检查flag[ 1 - ture ]为true的情况,情况2是ture不指向 j 的情况。
漩涡的中心有一块空地,空空的。
2楼2011-06-09 19:00:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sudo

木虫 (正式写手)

推荐把代码放到

【code】
这里
【/code】

其中【】用[]代替

while的那句是等待那些标记变量的变化,使得条件不满足之后再继续执行下面的语句

然而你可能会问,那些变量怎么会变化呢?

比如,其中一个可能是在另外的线程改变了那些变量的值

话说那书我没看过,如果你能给出程序的上下文的话,可能更有利于虫友们进行理解
3楼2011-06-09 19:01:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wahaha2000

铜虫 (小有名气)

再比如下面的代码:

【 while (true)
{
/* produce an item in nextProduced */
while (counter == BUFFER_SIZE) ; /* do nothing */
buffer[in] = nextProduced;
in = (in + 1) % BUFFER_SIZE;
counter++;
}  】

其中【while (counter == BUFFER_SIZE) ; 】起什么作用?

(1)若 counter == BUFFER_SIZE 为真,程序怎么运行?

【buffer[in] = nextProduced;
in = (in + 1) % BUFFER_SIZE;
counter++;

还接着运行吗?

(2)若 counter == BUFFER_SIZE 为假,程序怎么运行?

能否给我推荐一本有此内容的参考书,非常感谢!
5楼2011-06-09 22:14:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考博] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +3 2JOx3r2CYEgw 2026-08-22 4/200 2026-08-23 14:57 by KM5EcsNQRBPn
[硕博家园] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +3 2JOx3r2CYEgw 2026-08-21 6/300 2026-08-23 14:21 by KM5EcsNQRBPn
[教师之家] 跳槽后在研项目怎么办? +5 简单化xn 2026-08-22 10/500 2026-08-23 12:38 by 简单化xn
[基金申请] 什么时候开奖? +9 CrisMessi 2026-08-18 10/500 2026-08-23 12:03 by 丶昵称占用
[硕博家园] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +3 2JOx3r2CYEgw 2026-08-22 5/250 2026-08-23 07:41 by OEbVnUOu01ol
[博后之家] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +3 DpSrDtM079iu 2026-08-22 5/250 2026-08-23 04:07 by OEbVnUOu01ol
[论文投稿] 售SCI一区文章,我:8O5.5.1.O5.4,科目全,可伽急 +3 2JOx3r2CYEgw 2026-08-22 4/200 2026-08-23 04:04 by OEbVnUOu01ol
[论文投稿] 售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急 +3 QTy3jDtz1uLt 2026-08-21 9/450 2026-08-23 03:04 by OEbVnUOu01ol
[基金申请] filecode,4个jtjc了 +13 ziyangfang 2026-08-19 16/800 2026-08-22 17:08 by WH3796
[基金申请] 人气不行了 +8 fansofjerry 2026-08-21 8/400 2026-08-22 16:30 by zyqchem
[基金申请] 科研孤儿太难了 +17 我4大白菜 2026-08-20 18/900 2026-08-21 20:57 by zhangev
[基金申请] 看来今天不会放榜了? +8 chengyan1220 2026-08-21 11/550 2026-08-21 17:52 by dcqxinyang
[基金申请] 时间戳又变了 +13 wuchongjun 2026-08-20 19/950 2026-08-21 17:21 by 紫杉醇
[基金申请] 今天放榜没戏了吧 +9 yuleib84 2026-08-19 11/550 2026-08-21 10:06 by gltch
[基金申请] 基金啊基金 +4 longfie172 2026-08-20 4/200 2026-08-21 08:58 by mark mao
[基金申请] 估计是周四 +3 archvillain 2026-08-18 3/150 2026-08-21 01:48 by jnhyjjm
[基金申请] 重要消息,中午系统在维护 +11 yuleib84 2026-08-18 12/600 2026-08-20 11:09 by xskun
[基金申请] 朋友圈看到的 +6 wangzilk 2026-08-18 8/400 2026-08-19 10:55 by Haru815
[基金申请] 明天放榜? +5 Shxjjxjkx 2026-08-18 5/250 2026-08-18 18:14 by -大大大大大-
[基金申请] 今天维护系统维护 祝所有人 高中 +8 gjjjzhong 2026-08-18 9/450 2026-08-18 13:01 by 家与远方
信息提示
请填处理意见