go語言之進階篇創建goroutine協程


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() {
	for {
		fmt.Println("this is a newTask")
		time.Sleep(time.Second) //延時1s
	}
}

func main() {

	go newTask() //新建一個協程, 新建一個任務

	for {
		fmt.Println("this is a main goroutine")
		time.Sleep(time.Second) //延時1s
	}
}

執行結果:

this is a main goroutine
this is a newTask
this is a newTask
this is a main goroutine
this is a newTask

 

 原理圖:

 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM