日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Go goroutine

發(fā)布時間:2024/8/26 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Go goroutine 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

并發(fā)性Concurrency

并發(fā)概念

Go是并發(fā)語言,而非并行語言。并發(fā)性是同時處理許多事情的能力。并行性parallelism指可以同時做很多事情。

Go中使用Goroutines來實(shí)現(xiàn)并發(fā)concurently。Goroutines是與其他函數(shù)或方法同時運(yùn)行的函數(shù)或方法。

goroutines?

Goroutines被認(rèn)為是輕量級的線程,與線程相比,創(chuàng)建Goroutines成本很小,故Go應(yīng)用程序可以并發(fā)執(zhí)行數(shù)千個Goroutines。

在線程上優(yōu)勢

  • 與線程相比,Goroutines非常便宜,只是堆棧大小的幾個kb,堆棧可根據(jù)應(yīng)用程序的需要增長和收縮。而線程情況下,堆棧大小必須指定并且是固定的。
  • Goroutines被多路復(fù)用到較少的OS線程,一個程序中可能只有1個線程與數(shù)千個Goroutines,若線程中任何Goroutine都表示等待用戶輸入,則會創(chuàng)建另一個OS線程,剩下的Goroutines被轉(zhuǎn)移到新的OS線程。所有這些都由運(yùn)行時處理,程序員從這些復(fù)雜細(xì)節(jié)中抽象出來,得到一個與并發(fā)工作相關(guān)的干凈的API。
  • 使用Goroutines訪問共享內(nèi)存時,通過設(shè)計的通道可以防止競態(tài)條件發(fā)生。通道可以被認(rèn)為時Goroutines通信的管道。

Go語言協(xié)程

定義

不需要在定義時區(qū)分是否是異步函數(shù)(這點(diǎn)是針對Python3.5引入的async def定義時說明自己是一個協(xié)程)

調(diào)度器在合適的點(diǎn)進(jìn)行切換(非搶占式的,但切換點(diǎn)也不是任意的點(diǎn),傳統(tǒng)是需要顯示寫出來,goroutine不需要)

可能切換的點(diǎn):I/O,select? ; channel ;等待鎖;函數(shù)調(diào)用(有時);runtime.Gosched()

注意:以上只是參考,不能保證切換,不能保證在其他地方不切換

使用-race來檢測數(shù)據(jù)訪問沖突

使用

任何函數(shù)或方法調(diào)用前面加上go就能送給調(diào)度器運(yùn)行?,運(yùn)行一個新的Goroutine。

?例子:

例子1:

goroutine.go

輸出是:Hello from goroutine 隨機(jī)打印的值

查看系統(tǒng)究竟起了多少個線程? top命令查看:CPU 占用率 #TH線程(根據(jù)系統(tǒng)核來)

?

Goroutine協(xié)程

子程序是協(xié)程的一個特例

協(xié)程特點(diǎn):

輕量級”線程”

非搶占式多任務(wù)處理,由協(xié)程主動交出控制權(quán)?

編譯器/解釋器/虛擬機(jī)層面的多任務(wù)

多個協(xié)程可在一個或多個線程在工作

啟動多個Goroutine

例子1

func numbers() {for i := 1; i <= 5; i++ {time.Sleep(250 * time.Millisecond)fmt.Printf("%d ", i)} } func alphabets() {for i := 'a'; i <= 'e'; i++ {time.Sleep(400 * time.Millisecond)fmt.Printf("%c ", i)} } func main() {go numbers()go alphabets()time.Sleep(3000 * time.Millisecond)fmt.Println("main terminated") } 輸出:1 a 2 3 b 4 c 5 d e main terminated

例子2

普通函數(shù)與協(xié)程對比:doWork做完了才把控制權(quán)交給main。

Goroutine規(guī)則:

  • 當(dāng)新Goroutine開始時,Goroutine調(diào)用立即返回,且不等待Goroutine執(zhí)行結(jié)束。
  • 當(dāng)Goroutine調(diào)用,并且其任何返回值被忽略之后,go立即執(zhí)行到下一行代碼
  • main的Goroutine應(yīng)該為其他的Goroutines執(zhí)行,若main的Goroutine終止了,程序?qū)⒈唤K止,其他Goroutine將不會運(yùn)行。

例子:

func hello() {fmt.Println("Hello world goroutine") } func main() {go hello() //由于main進(jìn)行Sleep,故go hello()有足夠時間在main Goroutine終止之前執(zhí)行time.Sleep(1 * time.Second)fmt.Println("main function") } //輸出是:Hello world goroutine main function

?

?

其他語言對協(xié)程支持

Go語言原生支持

C++:通過Boost.Coroutine庫支持

Java:不支持 (并不是完全不支持,有第三方的)

Python中:Python3.5以前使用yield關(guān)鍵字實(shí)現(xiàn)協(xié)程,Python3.5加入了async def 對協(xié)程原生支持

?

?

?

轉(zhuǎn)載于:https://www.cnblogs.com/ycx95/p/9367128.html

總結(jié)

以上是生活随笔為你收集整理的Go goroutine的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 成人黄色小说视频 | 中文字幕网站在线观看 | 艳妇乳肉豪妇荡乳av | 日本一二三区视频 | 一区在线免费 | 波多野结衣 在线 | 天天干天天操天天操 | 久久色婷婷 | 国产一级二级三级视频 | 久久婷婷五月综合 | 国产99在线观看 | v片在线观看 | 亚洲福利视频在线 | 在哪里看毛片 | 日韩成人在线视频 | 亚洲中文字幕97久久精品少妇 | 尤果网福利视频在线观看 | 一区二区三区视频网 | 欧美综合在线观看 | 亚洲成人h | 国产做爰全过程免费视频 | 成人免费毛片日本片视频 | 国产女人和拘做受视频免费 | 欧美在线观看一区二区三区 | 黄色网免费 | 无码一区二区三区 | 中文字幕有码在线观看 | 亚洲熟妇无码乱子av电影 | 免费性网站 | 久久精品a | 欧美brazzers| 在线观看一区二区视频 | 91九色视频在线 | 久久久综合精品 | 九九精品在线播放 | 久久久久久伊人 | 中文免费在线观看 | 久久精品国产亚洲av蜜臀色欲 | 在线99视频 | www.在线| 精品国产乱码久久久人妻 | 香蕉精品视频在线观看 | 91大神视频在线播放 | 欧美性猛交xxxx黑人猛交 | av制服丝袜在线 | 羞羞色视频| 国产系列精品av | 在线观看日批 | 亚洲国产精品国自产拍久久 | 完美搭档在线观看 | 国产精品88| 久久精品免费 | 五月丁香 | 91片看 | 国产黄色网页 | 欧美人伦 | www.夜夜 | 奇米精品一区二区三区在线观看一 | 91黄址 | 狠狠狠 | 99久久久无码国产精品不卡 | 亚洲爱情岛论坛永久 | 亚洲天堂一区在线观看 | 久久免费观看视频 | 四虎成人精品永久免费av九九 | 亚洲免费在线观看视频 | 欧美一卡二卡三卡四卡 | 琪琪免费视频 | 自拍99| 2020亚洲男人天堂 | 夫の上司に犯波多野结衣853 | 狠狠躁日日躁夜夜躁2022麻豆 | 三点尽露的大尺度国产 | 日韩一区二区三区在线观看视频 | 色爱五月天 | 日韩在线免费视频观看 | 六月丁香激情综合 | 国产黄色特级片 | 久久精品国产清自在天天线 | 精品无码一区二区三区 | 欧美性猛交性大交 | 91av福利视频| 熟妇高潮一区二区三区 | 男人插入女人下面的视频 | 一级美女黄色片 | 黑人巨大精品欧美黑寡妇 | av色图片 | 国产精品第一国产精品 | 国产精品一区二区三区免费在线观看 | 色视频网址 | av资源导航 | 日本精品一区二区三区四区的功能 | 色射射 | 亚洲国产高清在线 | 蜜桃香蕉视频 | 最好看的mv中文字幕国语电影 | 国产精品99久久久久久久女警 | 中文字幕亚洲精品在线 | 国产女人在线视频 |