【操作系统】Semaphore处理生产者-消费者问题
生活随笔
收集整理的這篇文章主要介紹了
【操作系统】Semaphore处理生产者-消费者问题
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
“生產(chǎn)者-消費者”問題
- 問題描述
- 問題分析
- 關系分析
- 求解思路
- 信號量設置
- 問題解決
- 復雜情況的求解示例
問題描述
一組生產(chǎn)者進程和一組消費者進程共享一個初始為空、大小為n的緩沖區(qū)。
只有緩沖區(qū)沒滿時,生產(chǎn)者才能把消息放入緩沖區(qū),否則必須等待;只有緩沖區(qū)不空時,消費者才能從其中取出消息,否則必須等待。
由于緩沖區(qū)是臨界資源,它只允許一個生產(chǎn)者放入消息,或者一個消費者從中取出消息。
問題分析
關系分析
生產(chǎn)者和消費者對緩沖區(qū)的訪問是互斥關系;生產(chǎn)者和消費者還是一個相互協(xié)作的關系,生產(chǎn)者生產(chǎn)后消費者才能消費,故是同步關系。
求解思路
只有生產(chǎn)者和消費者兩個進程,這兩個進程存在互斥和同步的關系,需要解決的重點就是互斥和同步的PV操作的位置。
信號量設置
需要三個信號量:
- mutex:互斥信號量,用于控制互斥訪問緩沖池,初始值為1
- full:用于記錄當前緩沖池中滿緩沖區(qū)的數(shù)目&
總結
以上是生活随笔為你收集整理的【操作系统】Semaphore处理生产者-消费者问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Java】Fibonacci数列编程实
- 下一篇: 【Git】IDEA项目关联Git的解决方