• 生产者与读写问题


    进程的同步-----生产者与消费者问题

    问题描述:

     

     

     生产者在放的时候,不能同时放

    消费者在拿的时候,不能同时拿

    生产者放的时候,消费者也不能拿

    这是互斥关系

    然后生产者往缓冲区放,消费者从缓冲区拿

    这是同步关系

    使用P、V操作时的注意事项

    P、V操作总是成对出现的;互斥操作时他们处于同一进程中;同步操作时他们处于不同进程中。

    P、V操作的位置十分重要,放置不当会造成严重后果,注意逻辑关系

    读者--写者问题

      问题描述:一个数据对象(文件、记录)可以为多个并发进程共享。其中有的进程只需要读其中的内容,我们称为“读者”;有的进程负责更新其中内容(读/写),我们称为“写者”。“读者”可以同时读取共享数据对象;“写者”不能和其他任何进程同时访问数据对象。

    如何实现?

    分析:

      读--写:互斥访问

      写--写:互斥访问

      读--读:允许同时访问

    第一类读者--写者问题:“读者”优先,只要有读进程在读,写进程被迫等待。

    设置信号量
    semaphore  mutex,write;//公用信号量,用于互斥
    mutex=1;write=1;//设置初值
    int  readcount//计数,用于记录读者的数目


    读者进程:
    P(mutex);//对readcount互斥
    readcoujt++;//读者数目加一
    if(readcount==1)//第一个读进程
        P(write)//申请使用data资源
    V(mutex)//释放readcount
    reading;
    P(mutex);//对readcount互斥
    readcount--;
    if(readcount==0)//最后一个进程
        V(write);//释放data资源
    V(mutex);//释放readcount    

    写者进程:
    P(write);//申请使用data资源
    writing;
    V(write);//释放data资源

  • 相关阅读:
    白话机器学习
    Intersecting Lines POJ
    Segments POJ
    Toy Storage POJ
    TOYS POJ
    2019CCPC秦皇岛赛区1004 Decimal
    Django 基本使用
    HTML页面布局
    微擎上传视频,音频,图片提示格式不支持
    微擎应用名称图标的修改
  • 原文地址:https://www.cnblogs.com/fate-/p/12465993.html
Copyright © 2020-2023  润新知