亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Go語言入門13之runtime包案例講解

 更新時間:2023年05月01日 07:51:46   作者:te9uila  
這篇文章主要介紹了Go語言入門runtime包相關(guān)知識,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

Runtime包

GOMAXPROCS()

? 用來設(shè)置可以并行計算的CPU核數(shù)最大值,并返回之前的值,具體使用方法上一篇有些,這里不再贅述

Gosched()

? 用于讓出CPU時間片,讓出當(dāng)前goroutine的執(zhí)行權(quán)限,調(diào)度器安排其他等待的任務(wù)運行,并在下次某個時候從該位置恢復(fù)執(zhí)行

Goexit()

? 用于立即中止當(dāng)前goroutine的運行(中止所在協(xié)程),而并不影響其他goroutine。?注意!Goexit()在中止當(dāng)前協(xié)程前,還是會運行當(dāng)前goroutine還沒有執(zhí)行的defer語句,切記,不允許在主函數(shù)調(diào)用Goexit(),會導(dǎo)致panic異常

runtime調(diào)度器是非常有用的東西,關(guān)于runtime包幾個方法

  • Gosched:讓當(dāng)前線程讓出cpu以讓其他線程運行,它不會掛起當(dāng)前線程,因此當(dāng)前線程未來會繼續(xù)執(zhí)行

  • NumCPU:返回當(dāng)前系統(tǒng)的CPU核數(shù)量

  • GOMAXPROCS:設(shè)置最大的可同時使用的CPU核數(shù)

  • Goexit:退出當(dāng)前goroutine(但是defer語句會照常執(zhí)行)

  • NumGoroutine:返回真該執(zhí)行和排隊的任務(wù)總數(shù)

  • GOOS:目標(biāo)操作系統(tǒng)

  • GOROOT:返回本機(jī)的GO路徑

舉個栗子

// 定義兩個函數(shù),Test01和Test02
// Test02在Test01運行結(jié)束之后運行
// 并且Test02在i = 3的時候結(jié)束運行
//Test01
func Test01(wg *sync.WaitGroup) {
	defer func() {
		fmt.Println("Test01結(jié)束!")
		wg.Done()
	}()
	fmt.Println("協(xié)程01循環(huán)輸出:")
	for i := 0; i < 5; i++ {
		fmt.Println("協(xié)程01 -", i)
	}
}
// Test02
func Test02(wg *sync.WaitGroup) {
	defer func() {
		fmt.Println("Test02結(jié)束!")
		wg.Done()
	}()
    // 等待Test01運行結(jié)束
	runtime.Gosched()
	fmt.Println("協(xié)程02循環(huán)輸出:")
	for i := 0; i < 5; i++ {
		if i == 3 {
			fmt.Println("i = 3 退出!")
            // 當(dāng)i = 3時執(zhí)行defer里的語句然后退出
			runtime.Goexit()
		}
		fmt.Println("協(xié)程02 -", i)
	}
}
// main函數(shù)調(diào)用
func main() {
	var wg sync.WaitGroup
	wg.Add(2)
	go Test01(&wg)
	go Test02(&wg)
	wg.Wait()
	fmt.Println("This is main function!")
}
/*輸出:
協(xié)程01循環(huán)輸出:
協(xié)程01 - 0
協(xié)程01 - 1
協(xié)程01 - 2
協(xié)程01 - 3
協(xié)程01 - 4
Test01結(jié)束!
協(xié)程02循環(huán)輸出:
協(xié)程02 - 0
協(xié)程02 - 1
協(xié)程02 - 2
i = 3 退出!
Test02結(jié)束!
This is main function!
*/

到此這篇關(guān)于Go語言入門13(runtime包)的文章就介紹到這了,更多相關(guān)Go runtime包內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • IdeaGo啟動報錯Failed to create JVM的問題解析

    IdeaGo啟動報錯Failed to create JVM的問題解析

    這篇文章主要介紹了IdeaGo啟動報錯Failed to create JVM的問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • golang sudog指的是什么

    golang sudog指的是什么

    sudog代表在等待隊列中的goroutine,比如channel發(fā)送接受,由于goroutine和同步對象的關(guān)系是多對多,因此需要sudog映射,本文重點介紹golang sudog指的是什么,感興趣的朋友一起看看吧
    2024-02-02
  • 詳解Go語言微服務(wù)開發(fā)框架之Go chassis

    詳解Go語言微服務(wù)開發(fā)框架之Go chassis

    分布式系統(tǒng)中每個進(jìn)程的動態(tài)配置管理及運行時熱加載就成為了一個亟待解決的問題。go chassis汲取了netflix的archaius框架經(jīng)驗,并做出來自己的創(chuàng)新特性。
    2021-05-05
  • Go語言使用kafka-go實現(xiàn)Kafka消費消息

    Go語言使用kafka-go實現(xiàn)Kafka消費消息

    本篇文章主要介紹了使用kafka-go庫消費Kafka消息,包含F(xiàn)etchMessage和ReadMessage的區(qū)別和適用場景,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的可以了解一下
    2024-12-12
  • 使用Go語言構(gòu)建高效的二叉搜索樹聯(lián)系簿

    使用Go語言構(gòu)建高效的二叉搜索樹聯(lián)系簿

    樹是一種重要的數(shù)據(jù)結(jié)構(gòu),而二叉搜索樹(BST)則是樹的一種常見形式,在本文中,我們將學(xué)習(xí)如何構(gòu)建一個高效的二叉搜索樹聯(lián)系簿,感興趣的可以了解下
    2024-01-01
  • go解析svn log生成的xml格式的文件

    go解析svn log生成的xml格式的文件

    這篇文章主要介紹了go解析svn log生成的xml格式的文件的方法,非常的實用,有需要的小伙伴可以參考下。
    2015-04-04
  • GoFrame框架gset交差并補(bǔ)集使用實例

    GoFrame框架gset交差并補(bǔ)集使用實例

    這篇文章主要為大家介紹了GoFrame框架gset交差并補(bǔ)集使用實例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • 詳解golang channel有無緩沖區(qū)的區(qū)別

    詳解golang channel有無緩沖區(qū)的區(qū)別

    這篇文章主要給大家介紹了golang channel有無緩沖區(qū)的區(qū)別,無緩沖是同步的,有緩沖是異步的,文中通過代碼示例給大家講解的非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • go語言實現(xiàn)簡單的并發(fā)網(wǎng)頁爬蟲示例

    go語言實現(xiàn)簡單的并發(fā)網(wǎng)頁爬蟲示例

    在這個章節(jié)中,我們將會結(jié)合之前的知識點,實現(xiàn)一個簡易的并發(fā)網(wǎng)頁爬蟲,我們的爬蟲會先爬取一個起始頁面,提取出所有的鏈接,然后并發(fā)地爬取這些鏈接,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2023-08-08
  • Go設(shè)計模式之觀察者模式圖解

    Go設(shè)計模式之觀察者模式圖解

    觀察者模式是一種行為設(shè)計模式, 允許你定義一種訂閱機(jī)制, 可在對象事件發(fā)生時通知多個 “觀察” 該對象的其他對象,下面這篇文章主要給大家介紹了關(guān)于圖解Go觀察者模式的相關(guān)資料,需要的朋友可以參考下
    2023-07-07

最新評論