go語言之高階篇建立goroutine協程

2022-07-05 04:36:10 字數 823 閱讀 2605

1、goroutine是什麼

goroutine是go並行設計的核心。goroutine說到底其實就是協程,但是它比執行緒更小,十幾個goroutine可能體現在底層就是五六個執行緒,go語言內部幫你實現了這些goroutine之間的記憶體共享。執行goroutine只需極少的棧記憶體(大概是4~5kb),當然會根據相應的資料伸縮。也正因為如此,可同時執行成千上萬個併發任務。goroutine比thread更易用、更高效、更輕便。

2、建立goroutine協程

只需在函式調⽤語句前新增 go 關鍵字,就可建立併發執⾏單元。開發⼈員無需了解任何執⾏細節,排程器會自動將其安排到合適的系統執行緒上執行。

在併發程式設計裡,我們通常想講乙個過程切分成幾塊,然後讓每個goroutine各自負責一塊工作。當乙個程式啟動時,其主函式即在乙個單獨的goroutine中執行,我們叫它main goroutine。新的goroutine會用go語句來建立。

示例:

package main

import (

"fmt"

"time"

)func newtask()

}func main()

}

執行結果:

this is a main goroutine

this is a newtask

this is a newtask

this is a main goroutine

this is a newtask

原理圖:

go語言之高階篇拷貝檔案案例

1 檔案案例 拷貝檔案 示例 package main import fmt io os func main srcfilename list 1 drcfilename list 1 if srcfilename drcfilename 唯讀方式開啟原始檔 sf,err1 os.open srcf...

go語言之高階篇物件導向程式設計

1 物件導向程式設計 對於物件導向程式設計的支援go 語言設計得非常簡潔而優雅。因為,go語言並沒有沿襲傳統物件導向程式設計中的諸多概念,比如繼承 不支援繼承,儘管匿名欄位的記憶體布局和行為類似繼承,但它並不是繼承 虛函式 建構函式和析構函式 隱藏的this指標等。儘管go語言中沒有封裝 繼承 多型...

go連線mysql Go語言之高階篇連線mysql

一 go連線mysql 1 mysql驅動 說明 sql.open 函式用來開啟乙個註冊過的資料庫驅動,go mysql driver中註冊了 mysql這個資料庫驅動,第二個引數是dns,它是go mysql driver定義的一些資料庫鏈結和配置資訊。或 在cmd中執行安裝命令 3 建立資料庫 ...