首先了解什麼是併發什麼是並行
注意:
注意區分什麼是goroutine
在併發和並行章節已經提到了.
獲取當前作業系統cpu
的核心數:
示例**:
package main注意:import (
"fmt"
"runtime")
/*呼叫runtime包下的函式獲取到當前作業系統的cpu核心數
*/func main()
fmt.printf("執行緒%d, sum值為:%d\n", index, sum)
}(i)}}
在呼叫的時候不能直接使用傳統的go run
命令,需要使用go run -race
命令才能看到goroutine
當中的結果
模擬平行計算任務
計算 n 個整型數的總和。示例**:將所有整型數分成 m 份,m 即 cpu 的個數。讓每個 cpu 開始計算分給它的那份計算任務,最後將每個 cpu 的計算結果再做一次累加,
得到所有 n 個整型數的總和
package main注意:import "runtime"
type vector float64
// op函式是乙個公共累加函式
func (v vector) op(num float64) float64
// 該型別實現的函式(執行運算函式)
func (v vector) dosome(i, n int, u vector, c chan int)
// 將結果傳輸回到channel當中
c <- 1}
// 設定cpu數量
var ncpu = runtime.numcpu()
const ncpu = 8 // 這裡注意常量和變數的區別,變數的宣告和賦值不能夠傳遞給常量
// 該型別分配的函式(分配cpu函式)
func (v vector) doall(u vector)
// 等待所有cpu完成任務將資料放入緩衝通道
for i := 0; i < ncpu; i++
}
Go之路之go語言結構
package main 定義了包名,必須在原始檔中非注釋的第一行指名這個檔案屬於哪個包,每個go應用程式都包含乙個名為main的包 import fmt 告訴go編譯器這個程式需要使用fmt包,fmt包含了格式化i o的函式 func main 需要注意 在go程式中,一行代表乙個語句的結束,結尾...
3 21 BI之SSIS之資料流轉換(漸變維度)
bi之ssis之資料流轉換 漸變維度 1 漸變維度 1.1 維度中的某些屬性會隨著時間的變化而變化時,我們稱該維度為漸變維度。比如,使用者維度中的手機號 住址等資訊會隨著時間變化,那麼使用者維度就是漸變維度。1.2 漸變維度需要新增兩個字段,dimbegintime和dimendtime,來記錄漸變...
go例項之函式
示例 如下 1 package main 23 import fmt 45 here s a function that will take an arbitrary number6 of ints as arguments.7 func sum nums int 13 fmt.println to...