进程/线程同步机制

来源:互联网 发布:淘宝肖像权侵权 编辑:程序博客网 时间:2024/05/18 01:05

        进程线程之间的通信共享数据在现实的应用中可以说是不可避免的,那么如何保证他们之间在使用同一个数据的时候能够有序,不出问题,这个就是同步机制要解决的问题,老师经常说程序设计到最后有很多哲学的问题,仔细想来也确实可以这么说,哈哈,其实哲学就是事物的道理吗,我们都多多少少是跟哲学沾边的。

        同步的机制主要有四种:临界区,互斥量,信号量和事件,下面分述之,首先说明,这些内容有些是网上看到别人的资料,有些是自己的总结,主要是自己留存备用

        1. 临界区:Critical Section

            用于线程间同步,多个线程同时访问一个资源时,首先进入这个临界区的获取使用权,其它排队,知道当前使用的线程释放临界区

        2. 互斥量:Mutex

            可以用于进程和线程间同步,功能与临界区类似

        3. 信号量:Semaphores

           可用于进程和线程间同步,它与临界区与互斥量的不同在于可以对资源的控制不是独享,而是可以同时使用的,它控制的是数目。

          就像经典的生产者消费者模型

           生产者在放货前需要知道还有多少个货物能往里放。

          消费者在拿货前需要知道有多少个货物能往外拿。

          生产者往里放货的时候要更新可以放货的数量以及可以拿货的数量。

          消费者拿货的时候也要更新这两个数量。

        4. 事件:Event

            事件是用来在进程和线程间同步的。就像我们人之间的交流。我把一件事做完了,告诉别人,别人收到这个消息才能接着往下做。或者他还要等第三个人把事情做完才能开       始做他的事。


        互斥量、信号量、事件用于进程间同步的功能还需要写程序验证一下。

        信号量的使用还需要练习。

0 0
原创粉丝点击