Go语言为并发而生
Go語言為并發(fā)而生
如上所述,硬件制造商正在為處理器添加越來越多的內(nèi)核以提高性能。所有數(shù)據(jù)中心都在這些處理器上運(yùn)行,更重要的是,今天的應(yīng)用程序使用多個微服務(wù)來維護(hù)數(shù)據(jù)庫連接,消息隊列和維護(hù)緩存。因此,開發(fā)的軟件和編程語言應(yīng)該可以輕松地支持并發(fā)性,并且應(yīng)該能夠隨著CPU核心數(shù)量的增加而可擴(kuò)展。
但是,大多數(shù)現(xiàn)代編程語言(如Java,Python等)都來自90年代的單線程環(huán)境。雖然一些編程語言的框架在不斷地提高多核資源使用效率,例如 Java 的 Netty 等,但仍然需要開發(fā)人員花費(fèi)大量的時間和精力搞懂這些框架的運(yùn)行原理后才能熟練掌握。
Go于2009年發(fā)布,當(dāng)時多核處理器已經(jīng)上市。Go語言在多核并發(fā)上擁有原生的設(shè)計優(yōu)勢,Go語言從底層原生支持并發(fā),無須第三方庫、開發(fā)者的編程技巧和開發(fā)經(jīng)驗。
很多公司,特別是中國的互聯(lián)網(wǎng)公司,即將或者已經(jīng)完成了使用 Go 語言改造舊系統(tǒng)的過程。經(jīng)過 Go 語言重構(gòu)的系統(tǒng)能使用更少的硬件資源獲得更高的并發(fā)和I/O吞吐表現(xiàn)。充分挖掘硬件設(shè)備的潛力也滿足當(dāng)前精細(xì)化運(yùn)營的市場大環(huán)境。
Go語言的并發(fā)是基于 goroutine 的,goroutine 類似于線程,但并非線程。可以將 goroutine 理解為一種虛擬線程。Go 語言運(yùn)行時會參與調(diào)度 goroutine,并將 goroutine 合理地分配到每個 CPU 中,最大限度地使用CPU性能。開啟一個goroutine的消耗非常小(大約2KB的內(nèi)存),你可以輕松創(chuàng)建數(shù)百萬個goroutine。
goroutine的特點:
總結(jié)
- 上一篇: 在Flutter中更快地加载您的图像资源
- 下一篇: goj基础环境的配置