" />

最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入理解GoLang并發(fā)與并行

 更新時間:2026年03月26日 08:29:07   作者:ruxingli  
本文主要介紹了GoLang并發(fā)與并行,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

Go 里的并發(fā)(Concurrency)并行(Parallelism),是面試高頻、也是理解 goroutine 的核心。給你一套能講清 + 能拿分的版本??

?? 一句話核心區(qū)別

并發(fā)是“同時處理多個任務的能力”,并行是“同時執(zhí)行多個任務的能力”。

?? 一、并發(fā)(Concurrency)

?? 重點:任務可以交替執(zhí)行

即使只有 1 個 CPU 核心,也能并發(fā)。

示例

go task1() 
go task2() 

在單核情況下:

  • 執(zhí)行 task1 一會
  • 切到 task2
  • 再切回來

?? 本質(zhì):調(diào)度切換

特點

  • 不一定同時執(zhí)行
  • 是一種“程序結構設計”
  • Go 用 goroutine + channel 實現(xiàn)

?? 二、并行(Parallelism)

?? 重點:多個任務真正同時執(zhí)行

必須依賴:

  • 多核 CPU
  • Go 調(diào)度器(GMP)

示例

2 核 CPU:

  • task1 在 核1 跑
  • task2 在 核2 跑

?? 真正同時執(zhí)行

特點

  • 一定同時執(zhí)行
  • 用于提升計算速度
  • 屬于“硬件 + 調(diào)度能力”

?? 三、Go 是怎么實現(xiàn)的?

Go 的核心設計:

用 goroutine 實現(xiàn)并發(fā),用 GMP 調(diào)度實現(xiàn)并行

?? 關鍵點

1?? goroutine = 并發(fā)單位

不是線程,也不等于并行

2?? 是否并行取決于:

runtime.GOMAXPROCS(n) 

?? 默認:
= CPU 核心數(shù)

3?? GMP 模型作用

  • G(goroutine)
  • P(調(diào)度器)
  • M(線程)

?? 調(diào)度流程:G → P → M → CPU 執(zhí)行

?? 四、一個非常好用的類比(面試加分)

并發(fā)(一個人做多件事)

一個廚師:

  • 一會炒菜
  • 一會切菜
  • 一會煮面

?? 來回切換

并行(多個人同時做)

多個廚師:

  • 一個炒菜
  • 一個煮面
  • 一個切菜

?? 同時進行

?? 五、Go 代碼對比(面試常用)

并發(fā)(未必并行)

for i := 0; i < 2; i++ {
    go func(i int) {
        fmt.Println(i)
    }(i)
}
time.Sleep(time.Second)

?? 有多個 goroutine,但不保證同時執(zhí)行

并行(利用多核)

runtime.GOMAXPROCS(4) 

?? 允許 4 個線程同時運行

?? 六、常見誤區(qū)(一定要會)

? goroutine = 并行

?? 錯,只是并發(fā)

? 并發(fā)一定更快

?? 不一定:

  • 有上下文切換開銷
  • 有鎖競爭

? 開越多 goroutine 越好

?? 錯:

  • CPU 密集 → 會更慢
  • 調(diào)度壓力大

?? 七、終極總結(面試王炸)

?? 直接這樣說:

在 Go 中,并發(fā)是通過 goroutine 實現(xiàn)的任務組織方式,而并行是通過 GMP 調(diào)度器在多核 CPU 上同時執(zhí)行多個 goroutine。goroutine 本身不保證并行,是否并行取決于運行環(huán)境和調(diào)度器配置。

到此這篇關于深入理解GoLang并發(fā)與并行的文章就介紹到這了,更多相關GoLang并發(fā)與并行內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:

相關文章

  • GO語言中常見的排序算法使用示例

    GO語言中常見的排序算法使用示例

    這篇文章主要為大家介紹了GO語言中常見排序算法的使用示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪
    2022-04-04
  • 深入解析Go語言中crypto/subtle加密庫

    深入解析Go語言中crypto/subtle加密庫

    本文主要介紹了深入解析Go語言中crypto/subtle加密庫,詳細介紹crypto/subtle加密庫主要函數(shù)的用途、工作原理及實際應用,具有一定的參考價值,感興趣的可以了解一下
    2024-02-02
  • Go 如何基于IP限制HTTP訪問頻率的方法實現(xiàn)

    Go 如何基于IP限制HTTP訪問頻率的方法實現(xiàn)

    這篇文章主要介紹了Go 如何基于IP限制HTTP訪問頻率的方法實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-11-11
  • Go語言實現(xiàn)布谷鳥過濾器的方法

    Go語言實現(xiàn)布谷鳥過濾器的方法

    這篇文章主要介紹了Go語言實現(xiàn)布谷鳥過濾器的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • Golang使用archive/zip包實現(xiàn)ZIP壓縮與解壓

    Golang使用archive/zip包實現(xiàn)ZIP壓縮與解壓

    Golang?中的?archive/zip?包用于處理?ZIP?格式的壓縮文件,提供了一系列用于創(chuàng)建、讀取和解壓縮?ZIP?格式文件的函數(shù)和類型,使用起來非常方便,下面就跟隨小編一起了解一下具體使用方法吧
    2023-08-08
  • 詳解go語言中并發(fā)安全和鎖問題

    詳解go語言中并發(fā)安全和鎖問題

    這篇文章主要介紹了go語言中并發(fā)安全和鎖問題,包含互斥鎖解鎖過程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-10-10
  • go中import包的大坑解決方案

    go中import包的大坑解決方案

    最近開始使用Go/GoLand 在import 自定義包時出現(xiàn)各種狀況,本文就介紹一下go中import包的大坑解決方案,具有一定的參考價值,感興趣 可以了解一下
    2022-06-06
  • Golang 獲取文件md5校驗的方法以及效率對比

    Golang 獲取文件md5校驗的方法以及效率對比

    這篇文章主要介紹了Golang 獲取文件md5校驗的方法以及效率對比,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-05-05
  • Go語言sync鎖與對象池的實現(xiàn)

    Go語言sync鎖與對象池的實現(xiàn)

    本文介紹了Go語言標準庫sync包提供的并發(fā)控制工具,主要包括互斥鎖(sync.Mutex)和讀寫鎖(sync.RWMutex)兩類同步機制,下面就來具體介紹一下這兩個的使用,感興趣的可以了解一下
    2025-08-08
  • Go語言中sync.Cond使用詳解

    Go語言中sync.Cond使用詳解

    本文主要介紹了Go語言中sync.Cond使用詳解,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09

最新評論

龙井市| 临桂县| 信丰县| 营山县| 福海县| 成安县| 延津县| 盐津县| 新郑市| 绥宁县| 芜湖市| 峨边| 姜堰市| 卓资县| 罗甸县| 昌邑市| 黄山市| 柘城县| 大石桥市| 抚顺市| 寻乌县| 贡山| 河西区| 黎平县| 施甸县| 鄂伦春自治旗| 革吉县| 正镶白旗| 阜阳市| 高台县| 巴彦淖尔市| 朝阳县| 普安县| 南召县| 宁乡县| 获嘉县| 武定县| 酉阳| 嘉黎县| 开封县| 雷州市|