併發之美 起源

2021-09-26 15:40:24 字數 554 閱讀 1534

論起併發程式設計的起源就要從計算機的運算速度和它的儲存和通訊子系統速度的差距太大,那麼此時大量的時間都花費在磁碟i/o、網路通訊或者資料庫訪問上。那如果不希望處理器在大部分時間裡都是出於等待其他資源的狀態,就必須使用一些手段去把處理器的運算能力「壓榨」出來,否則就會造成很大的浪費,而讓計算機同時處理幾項任務則是最容易想到、也被證明是非常有效的「壓榨」手段,這就是咱們今天要說到的------併發程式設計

我們一起來看下面這個圖:

圖中部分為執行緒進行本地業務邏輯計算------占用cpu

圖中部分為等待過程(訪問cache、service、db)-----不占用cpu

通過上圖的分析我們可以很明顯的知道:cpu在橘色部分執行的時候處於空閒狀態,所以此時我們讓其他執行緒在橘色部分占用cpu,是不是cpu的利用率就可以更高一些呢?

【外掛程式】我們這裡可以和jvm的記憶體模型聯絡起來,有興趣的朋友可以了解一下!

併發程式設計:利用多執行緒並行執行,充分使用cpu,提高cpu的利用率!

閱讀筆記 Go語言併發之美

文章題目 go語言併發之美 分享筆記 這篇文章說的是go routine和channel在go語言中的應用。剛開始看的時候,對文章使用lua的協程來描述goroutine還真是不習慣。建議讀者不要跟者作者使用這樣的稱呼。併發在go中得到語言級別的支援。文章列出了幾個goroutine和channel...

Go併發程式設計之美之條件變數

一 前言 go語言類似j a juc包也提供了一些列用於多執行緒之間進行同步的措施,比如低階的同步措施有 鎖 cas 原子變數操作類。相比j a來說go提供了獨特的基於通道的同步措施。本節我們先來看看go中與鎖相關的條件變數 二 條件變數 在j a中條件變數是與具體的鎖想關聯的,在go中也是這樣的。...

Go併發程式設計之美之互斥鎖

一 前言 go語言類似j a juc包也提供了一些列用於多執行緒之間進行同步的措施,比如低階的同步措施有 鎖 cas 原子變數操作類。相比j a來說go提供了獨特的基於通道的同步措施。本節我們先來看看go中互斥鎖 二 互斥鎖 互斥鎖是獨佔鎖,同時只有乙個執行緒可以獲取該鎖,其他執行緒則會被阻塞掛起,...