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

go語言阻塞函數(shù)和非阻塞函數(shù)實(shí)現(xiàn)

 更新時(shí)間:2023年03月07日 16:01:41   作者:不知所措。  
本文主要介紹了go語言阻塞函數(shù)和非阻塞函數(shù)實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

1、阻塞函數(shù)

阻塞函數(shù)在沒有得到結(jié)果之前,會(huì)將自己掛起,阻塞當(dāng)前線程,如下所示。

package main

import (
?? ?"fmt"
?? ?"time"
)

func func1() error {
?? ?for {
?? ??? ?time.Sleep(time.Microsecond)
?? ??? ?//或者做其它的操作后,通過break跳出循環(huán)
?? ?}
?? ?return nil
}

func main() {
?? ?err := func1()
?? ?fmt.Println(err) ? //只有等func1中for循環(huán)結(jié)束才能打印err
}

其中,func1就是阻塞函數(shù),因?yàn)閙ain函數(shù)在調(diào)用func1時(shí),它需要去等待func1函數(shù)for循環(huán)結(jié)束從而拿到返回值,在func1函數(shù)返回之前,main函數(shù)不能去做其它的事情。這里的main函數(shù)和func1函數(shù)都在同一個(gè)線程,所以func1函數(shù)會(huì)阻塞當(dāng)前線程。

2、非阻塞函數(shù)

非阻塞函數(shù)不會(huì)阻塞當(dāng)前線程。

package main

import (
?? ?"fmt"
?? ?"time"
)

func func1() error {
?? ?go func() {
?? ??? ?for {
?? ??? ??? ?time.Sleep(time.Microsecond)
?? ??? ??? ?//或者做其它的操作后,通過break跳出循環(huán)
?? ??? ?}
?? ?}()
?? ?return nil
}

func main() {
?? ?err := func1()
?? ?fmt.Println(err) //立馬打印出了<nil>
}

其中,func1就是非阻塞函數(shù),對(duì)于main函數(shù)而言,在調(diào)用func1后,不需要去關(guān)心func1中的for循環(huán)有沒有運(yùn)行結(jié)束,它能立馬拿到結(jié)果,從而可以去做自己想做的其它事情。當(dāng)然,這里main的函數(shù),即主線程需要保證當(dāng)前線程不會(huì)掛掉。

3、總結(jié)

從上面兩個(gè)例子可以看出來,非阻塞函數(shù)其實(shí)就是通過go語言中的協(xié)程來實(shí)現(xiàn)的。

到此這篇關(guān)于go語言阻塞函數(shù)和非阻塞函數(shù)實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)go語言阻塞函數(shù)和非阻塞函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • go之如何設(shè)置GOROOT和GOPATH

    go之如何設(shè)置GOROOT和GOPATH

    這篇文章主要介紹了go之如何設(shè)置GOROOT和GOPATH問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • go語言獲取系統(tǒng)盤符的方法

    go語言獲取系統(tǒng)盤符的方法

    這篇文章主要介紹了go語言獲取系統(tǒng)盤符的方法,涉及Go語言調(diào)用winapi獲取系統(tǒng)硬件信息的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-03-03
  • Golang實(shí)現(xiàn)文件夾的創(chuàng)建與刪除的方法詳解

    Golang實(shí)現(xiàn)文件夾的創(chuàng)建與刪除的方法詳解

    這篇文章主要介紹了如何利用Go語言實(shí)現(xiàn)對(duì)文件夾的常用操作:創(chuàng)建于刪除。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-05-05
  • Go語言讀取YAML 配置文件的兩種方式分享

    Go語言讀取YAML 配置文件的兩種方式分享

    在日常開發(fā)中,YAML 格式的文件基本上被默認(rèn)為是配置文件,其內(nèi)容因?yàn)榭s進(jìn)帶來的層級(jí)感看起來非常直觀和整潔。本文分享了讀取YAML 配置文件的兩種方式,需要的可以參考一下
    2022-12-12
  • Go之接口型函數(shù)用法

    Go之接口型函數(shù)用法

    這篇文章主要介紹了Go之接口型函數(shù)用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • 詳解Go?flag實(shí)現(xiàn)二級(jí)子命令的方法

    詳解Go?flag實(shí)現(xiàn)二級(jí)子命令的方法

    這篇文章主要介紹了Go?flag?詳解,實(shí)現(xiàn)二級(jí)子命令,本文就探討一下?Go?語言中如何寫一個(gè)擁有類似特性的命令行程序,需要的朋友可以參考下
    2022-07-07
  • 詳解Go語言中的數(shù)據(jù)類型及類型轉(zhuǎn)換

    詳解Go語言中的數(shù)據(jù)類型及類型轉(zhuǎn)換

    這篇文章主要為大家介紹了Go語言中常見的幾種數(shù)據(jù)類型,以及他們之間的轉(zhuǎn)換方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2022-04-04
  • go語言定義零值可用的類型學(xué)習(xí)教程

    go語言定義零值可用的類型學(xué)習(xí)教程

    這篇文章主要為大家介紹了go語言定義零值可用的類型教程學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • vim配置go語言語法高亮問題的解決方法

    vim配置go語言語法高亮問題的解決方法

    vim配置go語言語法高亮的問題已經(jīng)遇到過好幾次了,每次都是找不到答案,今天小編給大家?guī)砹藇im配置go語言語法高亮問題的解決方法,感興趣的朋友一起看看吧
    2018-01-01
  • 淺析Golang中float64的精度問題

    淺析Golang中float64的精度問題

    這篇文章主要來和大家一起探討一下Golang中關(guān)于float64的精度問題,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以了解下
    2023-08-08

最新評(píng)論