日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

提升應(yīng)用性能:Go中的同步與異步處理

來源: 責(zé)編: 時間:2023-11-06 08:53:21 244觀看
導(dǎo)讀在開發(fā)過程中,當(dāng)需要同時處理多個操作時,開發(fā)者經(jīng)常面臨同步和異步兩種處理方式的選擇。同步處理在同步處理方式中,任務(wù)按順序一個接一個地執(zhí)行。每個任務(wù)必須在下一個任務(wù)開始之前完成。這意味著如果某個任務(wù)需要花費(fèi)大

在開發(fā)過程中,當(dāng)需要同時處理多個操作時,開發(fā)者經(jīng)常面臨同步和異步兩種處理方式的選擇。Pf328資訊網(wǎng)——每日最新資訊28at.com

同步處理

在同步處理方式中,任務(wù)按順序一個接一個地執(zhí)行。每個任務(wù)必須在下一個任務(wù)開始之前完成。這意味著如果某個任務(wù)需要花費(fèi)大量時間來完成,它可能會阻塞后續(xù)任務(wù)的執(zhí)行,導(dǎo)致潛在的性能瓶頸。Pf328資訊網(wǎng)——每日最新資訊28at.com

一個簡單的現(xiàn)實(shí)生活中的例子是兩個人在喝啤酒時進(jìn)行對話。一個人說一些話并提問,另一個人根據(jù)情況回應(yīng),然后反過來...Pf328資訊網(wǎng)——每日最新資訊28at.com

在下面的示例中,每個URL調(diào)用必須完成其整個請求-響應(yīng)周期并提供響應(yīng)或錯誤,以便可以進(jìn)行后續(xù)的URL調(diào)用。Pf328資訊網(wǎng)——每日最新資訊28at.com

package mainimport ( "fmt" "net/http")func makeUrlCall(url string) { _, err := http.Get(url) if err != nil {  fmt.Println("Got error in connecting to url: ", url) } fmt.Println("Got the response from our url: ", url)}func main() { fmt.Println("Welcome here !!") fmt.Println() //slice of urls urlSlice := []string{  "https://www.baidu.com",  "https://www.csdn",  "https://www.runoob.com", } for idx, url := range urlSlice {  fmt.Println("Calling url on index: ", idx)  makeUrlCall(url) } fmt.Println() fmt.Println("End of sync processing !!") return}

輸出:Pf328資訊網(wǎng)——每日最新資訊28at.com

Welcome here !!Calling url on index:  0Got the response from our url:  https://www.baidu.comCalling url on index:  1Got the response from our url:  https://www.csdnCalling url on index:  2Got the response from our url:  https://www.runoob.comEnd of sync processing !!

異步處理

在異步處理方式中,任務(wù)獨(dú)立并同時執(zhí)行。這意味著程序在一個任務(wù)完成之前不會等待它繼續(xù)下一個任務(wù)。在Golang中,可以使用Goroutines和Go運(yùn)行時來實(shí)現(xiàn)異步編程。Pf328資訊網(wǎng)——每日最新資訊28at.com

一個簡單的現(xiàn)實(shí)生活中的例子是去汽車修理店。一旦工程師處理完其他任務(wù),他們會處理你的任務(wù)。在此期間,你可以做其他重要的事情,直到你的汽車被取走并修好。Pf328資訊網(wǎng)——每日最新資訊28at.com

在下面的示例中,每個URL調(diào)用將通過goroutine在自己的線程中進(jìn)行,并根據(jù)需要處理響應(yīng)。Pf328資訊網(wǎng)——每日最新資訊28at.com

package mainimport ( "fmt" "net/http" "sync")func makeUrlCall(url string) { _, err := http.Get(url) if err != nil {  fmt.Println("Got error in connecting to url: ", url) } fmt.Println("Got the response from our url: ", url)}func main() { fmt.Println("Welcome here !!") fmt.Println() //slice of urls urlSlice := []string{  "https://www.baidu.com",  "https://www.csdn",  "https://www.runoob.com", } var wg sync.WaitGroup for _, u := range urlSlice {  wg.Add(1)  //all the url's to get error/response are called in their own separate thread via goroutines  go func(url string) {   defer wg.Done()   makeUrlCall(url)  }(u) } wg.Wait() fmt.Println() fmt.Println("End of sync processing !!") return}

輸出:Pf328資訊網(wǎng)——每日最新資訊28at.com

Welcome here !!Got the response from our url:  https://www.baidu.comGot the response from our url:  https://www.runoob.comGot the response from our url:  https://www.csdnEnd of sync processing !!

如果我們在切片中添加更多的URL并進(jìn)行更多的HTTP get請求,比較兩種方式的性能。Pf328資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-17164-0.html提升應(yīng)用性能:Go中的同步與異步處理

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 一年經(jīng)驗(yàn),你讓我精通微服務(wù)開發(fā),過分嗎?

下一篇: 聊聊接口重試機(jī)制的幾種解決方案

標(biāo)簽:
  • 熱門焦點(diǎn)
Top 主站蜘蛛池模板: 托克托县| 大港区| 福建省| 旌德县| 吉林省| 颍上县| 湘乡市| 汝阳县| 牡丹江市| 蕲春县| 安福县| 霍城县| 伊川县| 汤原县| 邳州市| 沁水县| 洪湖市| 石林| 锡林浩特市| 习水县| 西贡区| 太谷县| 遵化市| 临夏县| 麦盖提县| 原平市| 赣榆县| 北京市| 哈巴河县| 庄浪县| 鲁甸县| 潼南县| 南部县| 泸水县| 来宾市| 巨野县| 元江| 分宜县| 宁河县| 正定县| 常德市|