24小时热门版块排行榜    

Znn3bq.jpeg
查看: 1694  |  回复: 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的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 286求调剂 +8 草木不言 2026-04-04 9/450 2026-04-10 23:29 by dc19971224
[考研] 283求调剂 +21 那个噜子 2026-04-09 21/1050 2026-04-10 21:18 by zhouxiaoyu
[考研] 本科西工大 324求调剂 +4 wysyjs25 2026-04-10 4/200 2026-04-10 20:00 by 来看流星雨10
[考研] 22408 366分,本科211,一志愿西工大 +4 Rubt 2026-04-09 4/200 2026-04-10 19:51 by chemisry
[考研] 337求调剂 +3 研s. 2026-04-10 3/150 2026-04-10 16:20 by 木子君1218
[考研] 求调剂 +16 熊二想上岸 2026-04-04 16/800 2026-04-10 11:24 by may_新宇
[考研] 0702物理学学硕299求调剂 +6 祁柒连 2026-04-06 6/300 2026-04-10 11:10 by Roomoo
[考研] 材料专硕283求调剂 +18 试试看呗 2026-04-04 19/950 2026-04-10 10:05 by may_新宇
[考研] 调剂 +24 不逢春 2026-04-07 25/1250 2026-04-10 09:39 by 690616278
[考研] 材料调剂 +11 一样YWY 2026-04-05 11/550 2026-04-10 09:32 by 钟洲2011
[考研] 314求调剂 +14 weltZeng 2026-04-09 14/700 2026-04-09 23:14 by wolf97
[考研] 266求调剂,一志愿哈工程电子信息,本科获多项国奖和省奖 +4 lumine1 2026-04-06 4/200 2026-04-09 17:38 by vgtyfty
[考研] 337求调剂 +4 Gky09300550, 2026-04-09 4/200 2026-04-09 17:18 by 帕尔马拉特
[考研] 考研调剂 +13 冰冰,,, 2026-04-07 13/650 2026-04-09 17:01 by Lilly_Li
[考研] 283电子信息求调剂 +4 三石WL 2026-04-08 4/200 2026-04-09 10:21 by wp06
[考研] 259求调剂 +5 就爱吃土豆呀呀 2026-04-07 5/250 2026-04-07 22:40 by JourneyLucky
[考研] 本科生物信息学,总分362 求07 08调剂 +6 q小倩1210 2026-04-06 6/300 2026-04-07 19:40 by macy2011
[考研] 081700,311,求调剂 +17 冬十三 2026-04-04 18/900 2026-04-07 12:50 by Sammy2
[论文投稿] Decision: Revise for Editor还会送审吗 100+3 CccccccccFD 2026-04-04 5/250 2026-04-07 10:58 by 北京莱茵润色
[考研] 求助 +3 卡卡东88 2026-04-06 4/200 2026-04-06 15:28 by going home
信息提示
请填处理意见