沧海一粟

曹佳ID:JerryCircle
28536次访问,排名3964(-1)好友6人,关注者5
我是一个热爱编程的人。编程给我激情,编程给我能量,编程中能够寻得快乐!
我是一个乐观的人。一切都会好起来的,我常常这么告诉自己。
我是一个快乐的人。我有一个爱我疼我,我爱我疼的女友。我有一帮无私的帮助我支持我的朋友。
我希望,我的快乐,能够带给所有的人!
JerryCircle的文章
原创 64 篇
翻译 0 篇
转载 5 篇
评论 2 篇
JerryCircle的公告
本博客正式迁移

jerrycircle.blogspot.com

最近评论
JerryCircle:$':被匹配串后面的字符串
$`:被匹配串之前的字符串
$&:被匹配的字符串
$~:是一个MatchData对象,保存匹配信息,具体可查看原书

它们都是全局性的,这跟perl有点类似。
前三者都是字符串对象,最后一个是MatchData对象
看一下那个例子就清楚了
kenlistian:$'
$`
$~
$&
咋都是啥意思啊

文章分类
收藏
    相册
    南京
    平遥之旅
    未名博雅
    我家的琼琼
    玉渊潭
    CSDN首页
    CSDN首页
    佛缘
    中华佛教在线
    好友博客
    很靠谱,王滔(RSS)
    我自己的(RSS)
    海马的,其实就是孙柏!
    我爱我家
    我爱我家
    阳光
    阳光志愿者协会
    优秀站点
    Standard Template Library Programmer's Guide
    StdExt - C++ STL Extensions
    Steve的博客——编程语言
    w3school
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 进程调度(二)——进程的同步与互斥收藏

    新一篇: Google 实习笔试 | 旧一篇: 我是怎么了

           在操作系统中,使用PV操作对进程中的临界区进行同步与互斥。PV操作都是一个原语,是不会被打断的。PV操作针对的是信号量,所谓信号量,就是记录某信号当前状态的一个量。

           从直观上来理解,P操作就是测试信号量S的是否有资源,若没有,则加入到S的等待队列中;V操作就是释放对S的资源,并唤醒S的等待队列中的第一个进程。

           一般来说,比较经典的互斥与同步的问题有:生产者与消费者问题,读者写者问题,哲学家就餐问题,巴拿马运河问题,等等。下面对这些问题进行分析。

           生产者与消费者问题,现在考虑最简单的情况,只有一个生产者和一个消费者,且只有一个缓冲区,那么,消费者必须在生产者生产后(缓冲区非空)才能取产品消费,即他们之间是同步的关系;生产者生产后必须在缓冲区未满时送出产品;那么,定义一个信号量S1(初值为0)来标识缓冲区非空,信号量S2(初值为1)来标识缓冲区非满。

           对于消费者,其操作为:

                  while(true)

                  {

                         PS1);

                         取产品;

                         VS2);

                         消费

                  }

           对于生产者,其操作为:

                  while(true)

                  {

                         消费;

                         PS2);

                         送产品;

                         VS1);

                  }

           当然,这是最简单的生产者与消费者问题,在大多数情况下,生产者和消费者往往是多个的,缓冲也是多个的,那么,就需要加入互斥的操作,会稍微复杂一点,在此不再赘述。

           读者写者问题是这样的,有一群写者和一群读者,写者在写同一本书,读者也在读这本书,多个读者可以同时读这本书,但是,只能有一个写者在写书,并且,读者必写者优先,也就是说,读者和写者同时提出请求时,读者优先。当读者提出请求时需要有一个互斥操作,另外,需要有一个信号量S来当前是否可操作。

           对于读者,其操作为:

                  while(true)

                  {

                         Pmutex);

    readCount++

                         ifreadCount==1

                                PS);

                         Vmutex);

                         读书

                         Pmutex);

                         readCount--

                         ifreadCount==1

                                VS);

                         Vmutex);

                  }

           对于写者,其操作为:

                  while(true)

                  {

                         PS);

                         写;

                         VS);

                  }

    关于哲学家就餐问题和巴拿马问题,也都是很经典的问题,限于时间问题,笔者不准备再做详细的分析。

    总之,PV操作在进程的同步于互斥中起着至关重要的作用,在多线程的编程中也是经常会用到。

     

    发表于 @ 2006年11月26日 22:37:00|评论(loading...)|编辑

    新一篇: Google 实习笔试 | 旧一篇: 我是怎么了

    评论:没有评论。

    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © JerryCircle