第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

golang 好用在多線程應用程序中嗎?

golang 好用在多線程應用程序中嗎?

Go
幕布斯7119047 2022-05-18 14:48:19
我正在構建將創(chuàng)建大量線程的應用程序。每個線程將連接到不同的遠程服務器,并且每個線程必須始終與它的服務器通信。在我使用之前PHP,對于這樣的目標來說,這是一個不好的解決方案。我認為本機線程如何工作:例如,我們在單核上有 100 個線程。核心將在所有線程之間分配它的工作時間。根據(jù)我的閱讀和理解,這里是:如果我開很多goroutines,goroutine可以阻止其他人的執(zhí)行goroutines。goroutine在特定情況下(可能在當前睡眠或類似情況下),執(zhí)行將被傳遞給其他人。但它不像本地線程那樣工作。我需要使所有線程都能流暢地執(zhí)行。就像每個處理器的時間一樣goroutine。我不需要一些goroutine被執(zhí)行很長時間而另一些會等待..我可以實現(xiàn)它golang嗎?或者更好地使用另一種語言(哪一種)?
查看完整描述

1 回答

?
暮色呼如

TA貢獻1853條經驗 獲得超9個贊

并發(fā)是 Go 的主要優(yōu)勢之一。這并不意味著 Go 運行時可以神奇地解決所有問題和案例,并使您的所有代碼閃電般快速。你可以用任何語言編寫糟糕的代碼。但是并發(fā)是內置在語言中的。它為您提供了幾種語言工具,意味著輕松編寫高效的并發(fā)代碼,例如 goroutines、channels、selectstatement、同步原語。

goroutine 是一個輕量級線程。它比真正的 OS 線程成本低很多,并且多個 goroutine 可以多路復用到單個 OS 線程上。規(guī)范將它們定義為“同一地址空間內的獨立并發(fā)控制線程”。

Go 運行時能夠毫無問題地處理數(shù)千甚至數(shù)十萬個 goroutine。例如,標準庫中的HTTP 服務器通過為每個請求啟動一個新的 goroutine 來處理所有傳入請求。然而,對于典型的請求負載(基準源),它每秒能夠處理數(shù)萬個請求。

所以總而言之,不要寫“壞代碼”。goroutine 調度程序不是(完全)搶占式的,因此請確保您的 goroutines 不會進行會阻止調度程序運行其他 goroutines 的無意義計算。通常,系統(tǒng)調用、IO 操作符和阻塞操作(例如從通道發(fā)送/接收)是很好的屈服點。即使您不知道,許多代碼也會在后臺執(zhí)行這些操作,因此大多數(shù)代碼不會引起問題。如果您的某個 goroutine 必須進行大量計算,您可以隨時調用runtime.Gosched()以讓處理器,允許其他 goroutine 運行。


查看完整回答
反對 回復 2022-05-18
  • 1 回答
  • 0 關注
  • 150 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號