Article View: cn.bbs.comp.unix.programming.kernel
Article #26TO fion: �����ں��ź���
From: howto
Date: Tue, 12 Mar 2002 06:20
Date: Tue, 12 Mar 2002 06:20
67 lines
4852 bytes
4852 bytes
�������ǵ������ˣ��������ܽᣬ�Ǻ� �����û����ǵ����ӣ� ��sem->count=sem->sleepers=0��Ҳ���������ȴ���� ��һ������������У� �Ⱥ�ֱ����3��down()��������3��up()���������£� Ϊ�˲������㣬ֻ������һЩ��ı�sleepers��countֵ�IJ��裬������ѭ���������� ���е�ԭ�� ��������˼·����д��������� down1: count(0->-1),sleepers(0->1),sleepers-1+count(-1),count(-1),sleepers(1),���� down2: count(-1->-2),sleepers(1->2),sleepers-1+count(-1),count(-1),sleepers(1),���� down3: count(-1->-2),sleepers(1->2),sleepers-1+count(-1),count(-1),sleepers(1),���� up1: count(-1->0),����һ��˯�߽�̣���Ϊ1��,�����1�õ�������У�sleepers-1+count (0),count(0),sleepers(0),break, ������һ��˯�߽�̣���Ϊ2���������2�õ�������У�sleepers-1+count(-1),count (-1),sleepers(1),���ȣ�û�ﵽ�������ֵ�˯���� up2: count(-1->0),����Ϊcount<=0������һ��˯�߽�̣���Ϊ2��,�����2�õ�������У� sleepers-1+count(0),count(0),sleepers(0),break, ������һ��˯�߽�̣���Ϊ3���������3�õ�������У�sleepers-1+count(-1),count (-1),sleepers(1),���ȣ�û�ﵽ�������ֵ�˯���� up3: count(-1->0),����Ϊcount<=0������һ��˯�߽�̣���Ϊ3��,�����3�õ�������У� sleepers-1+count(0),count(0),sleepers(0),break, ������һ��˯�߽�̣���ʱ������û���ˣ� �����3���н���ִ��up(), ʹcount =1 ,��ʱ���û��״̬ �� ���濼����ԭ����linuxforum�Ͼٵ��龰�����ǿ��ǽ��2��3û��ô�����ӵ�������� ʵ���һ�㣩 down1: count(0->-1),sleepers(0->1),sleepers-1+count(-1),count(-1),sleepers(1),���� down2: count(-1->-2),sleepers(1->2),sleepers-1+count(-1),count(-1),sleepers(1),���� down3: count(-1->-2),sleepers(1->2),sleepers-1+count(-1),count(-1),sleepers(1),���� up1: count(-1->0),����һ��˯�߽�̣���Ϊ1��,�����1�õ�������У�sleepers-1+count( 0),count(0),sleepers(0),break, ������һ��˯�߽�� ����Ϊ2�� up2: count(0->1),����Ϊcount>0,����ֱ�ӷ��أ� �����2�õ�����ˣ� sleepers-1+count(0),count(0),sleepers(0),break, ������һ��˯�߽�̣�����Ϊ3�� up3: count(0->1),����Ϊcount>0,����ֱ�ӷ��أ������3�õ�������У� sleepers-1+count(0),count(0),sleepers(0),break, ������һ��˯�߽�̣���ʱ������û���ˣ� �����3���н���ִ��up(), ʹcount =1 ,��ʱ���û��״̬ �� ���������ˣ��Ǻ� ΪʲôҪ��ִ��wake_up() �أ�Ӧ�ÿ��Դӵ�һ����������������磬�ڵ�һ������� �����2��һ�εõ��������ʱ��������ʱ������Ľ�� ��ûִ��up()�ģ����п���������ִ����up()�ˣ��������п��ܻᷢ��count ==1���� ������ʱ�����IJ���˯���ˣ����Ǽ����ӵĺô����Ǻǣ� ��Ȼʵ�������е������Ӧ�������漸��������ۺ��ˣ��ø��Ӱ��������� -- [m[1;34m�� ��Դ:��UNIX��� apue.dhs.org��[FROM: 202.38.242.94][m
Technical Details
Message-ID:
<3lI6CR$0ni@apue.dhs.org>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!supernews.com!news.tele.dk!small.news.tele.dk!194.25.134.62!newsfeed00.sul.t-online.de!newsfeed01.sul.t-online.de!t-online.de!news.cn99.com!news.tiaozhan.com!APUEShow Full Headers
Complete Article Headers
X-Google-Language: Chinese,GB X-Google-Thread: 10e809,91cd188c853b4a67,start X-Google-Attributes: gid10e809,public X-Google-ArrivalTime: 2002-03-11 22:32:29 PST Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!supernews.com!news.tele.dk!small.news.tele.dk!194.25.134.62!newsfeed00.sul.t-online.de!newsfeed01.sul.t-online.de!t-online.de!news.cn99.com!news.tiaozhan.com!APUE From: howTo.bbs@apue.dhs.org (howto) Newsgroups: cn.bbs.comp.unix.programming.kernel Subject: TO fion: �����ں��ź��� Date: 12 Mar 2002 06:20:15 GMT Organization: APUE Message-ID: <3lI6CR$0ni@apue.dhs.org> X-Filename: UKP/M.1015912539.A Lines: 67