欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

Runtime包

GOMAXPROCS()

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

Gosched()

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

Goexit()

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

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

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

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

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

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

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

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

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

舉個(gè)栗子

// 定義兩個(gè)函數(shù),Test01和Test02
// Test02在Test01運(yùn)行結(jié)束之后運(yùn)行
// 并且Test02在i = 3的時(shí)候結(jié)束運(yùn)行
//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運(yùn)行結(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時(shí)執(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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • IdeaGo啟動(dòng)報(bào)錯(cuò)Failed to create JVM的問題解析

    IdeaGo啟動(dòng)報(bào)錯(cuò)Failed to create JVM的問題解析

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

    golang sudog指的是什么

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

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

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

    Go語言使用kafka-go實(shí)現(xiàn)Kafka消費(fèi)消息

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

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

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

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

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

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

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

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

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

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

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

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

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

最新評(píng)論