Linux系统编程40:多线程之基于环形队列的生产者与消费者模型
生活随笔
收集整理的這篇文章主要介紹了
Linux系统编程40:多线程之基于环形队列的生产者与消费者模型
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
文章目錄
- (1)什么是信號量
- (2)與信號量相關(guān)的操作
- (3)基于環(huán)形隊列的生產(chǎn)者與消費者模型-信號量(單消費者單生產(chǎn)者)
(1)什么是信號量
前面的敘述中,我們通過鎖保證了每次只有一個線程進入臨界區(qū),但是臨界區(qū)資源很多也很大,每次只允許一個線程進入往往會使效率很低。所以如果將臨界區(qū)劃分為多個獨立的區(qū)域,劃分為多少個區(qū)域就讓多少個線程進入,,但是這樣就同時帶來了一個問題——如果劃分為了5個區(qū)域,但是同時進入了10個線程該怎么辦?所以這一點可以通過信號量解決。信號量可以理解為一個計數(shù)器,它用來描述臨界資源的有效個數(shù)
信號量由一個值和一個指針組成,指針指向等待該信號量的線程。信號量的值表示相應(yīng)資源的使用情況,比如如果S>=0表示資源夠用,如果執(zhí)行P操作表示請求分配一個資源,那么S就會減一;當(dāng)S<0時表示已經(jīng)沒有可用資源(此時S的絕對值表示等待該資源的線程數(shù))請求者必須等待其他線程釋放資源方可繼續(xù)運行。如果執(zhí)行一個V操作就表示會釋放一個資源,所以S加一
(2)與信號量相關(guān)的操作
1:要使用信號量就需要創(chuàng)建一個sem_t類型變量
總結(jié)
以上是生活随笔為你收集整理的Linux系统编程40:多线程之基于环形队列的生产者与消费者模型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 查看服务器信息命令
- 下一篇: Linux系统编程26:进程间通信之进程