婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > golang中的并發(fā)和并行

golang中的并發(fā)和并行

熱門(mén)標(biāo)簽:電話(huà)機(jī)器人軟件免費(fèi) 評(píng)價(jià)高的400電話(huà)辦理 涿州代理外呼系統(tǒng) 壽光微信地圖標(biāo)注 百度地圖標(biāo)注后傳給手機(jī) 外呼系統(tǒng)用什么卡 excel地圖標(biāo)注分布數(shù)據(jù) 外呼系統(tǒng)顯本地手機(jī)號(hào) 阿克蘇地圖標(biāo)注

golang中默認(rèn)使用一個(gè)CPU,這時(shí)程序無(wú)法并發(fā),只能是并發(fā)。因?yàn)槭冀K只有一個(gè)CPU在運(yùn)行。

package main 
import (
        "fmt"
        "runtime"
)
 
//并發(fā)和并行
var quit chan int = make(chan int) 
func loop() {
        for i := 0; i  100; i++ { //為了觀察,跑多些
                fmt.Printf("%d ", i)
        }
        quit - 0
}
 
func main() {
        runtime.GOMAXPROCS(2) // 最多使用2個(gè)核
 
        go loop()
        go loop()
 
        for i := 0; i  2; i++ {
                - quit
        }
}

runtime.GOMAXPROCS(2) 設(shè)置使用2個(gè)CPU,這才真正是并行。

補(bǔ)充:Go多核并行化

通過(guò)goroutine創(chuàng)建相同邏輯CPU核心個(gè)數(shù)的協(xié)程,將求和列表分段,分別計(jì)算后匯總。

通過(guò)runtime.NUMCPU()獲得邏輯CPU個(gè)數(shù),并計(jì)算每個(gè)協(xié)程中計(jì)算列表的下標(biāo),計(jì)算完成后,向channel中寫(xiě)入1。

通過(guò)向channel中讀取int的個(gè)數(shù),判斷協(xié)程運(yùn)行是否全部完成,之后求和即可。

package main
import (
	"fmt"
	"runtime"
)
type Vector []float64
func (v Vector) DoSome(p, i, n int, u Vector, c chan int) {
	sum := 0.0
	for ; i  n; i++ {
		sum += u[i]
	}
	v[p] = sum
	c - 1
}
const NCPU = 4
func (v Vector) DoAll(u Vector) {
	c := make(chan int, NCPU)
	for i := 0; i  NCPU; i++ {
		fmt.Println(i, i*len(u)/NCPU, (i+1)*len(u)/NCPU)
		go v.DoSome(i, i*len(u)/NCPU, (i+1)*len(u)/NCPU, u, c)
	}
	for i := 0; i  NCPU; i++ {
		-c
	}
	sum := 0.0
	for _, value := range v {
		sum += value
	}
	fmt.Println(sum)
}
func main() {
	u := make([]float64, 64)
	for i := 0; i  64; i++ {
		u[i] = float64(i)
	}
	var v Vector = make([]float64, NCPU)
	v.DoAll(u)
	ncpu := runtime.NumCPU()
	fmt.Println(ncpu)
}

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • 關(guān)于golang高并發(fā)的實(shí)現(xiàn)與注意事項(xiàng)說(shuō)明
  • 基于Golang 高并發(fā)問(wèn)題的解決方案
  • 使用golang編寫(xiě)一個(gè)并發(fā)工作隊(duì)列
  • golang 并發(fā)編程之生產(chǎn)者消費(fèi)者詳解
  • Golang 并發(fā)以及通道的使用方式
  • 快速解決Golang Map 并發(fā)讀寫(xiě)安全的問(wèn)題
  • 淺談golang并發(fā)操作變量安全的問(wèn)題

標(biāo)簽:欽州 汕頭 重慶 銅川 吐魯番 梅河口 蘭州 雞西

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《golang中的并發(fā)和并行》,本文關(guān)鍵詞  golang,中的,并發(fā),和,并行,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《golang中的并發(fā)和并行》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于golang中的并發(fā)和并行的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 十堰市| 琼海市| 青川县| 申扎县| 托克托县| 罗定市| 诏安县| 新田县| 博爱县| 方山县| 许昌县| 康乐县| 仁化县| 阜新市| 凉城县| 广水市| 儋州市| 阳东县| 天柱县| 高唐县| 崇州市| 荃湾区| 岑溪市| 凉城县| 扶风县| 潜江市| 卢龙县| 微山县| 陇川县| 浏阳市| 朝阳区| 宜阳县| 特克斯县| 元阳县| 论坛| 革吉县| 贡山| 共和县| 蒙城县| 永清县| 沧州市|