golang有進程。進程就是程式在作業系統中的一次執行過程,是由系統進行資源分配和調度的基本單位;進程是一個動態概念,是程式在執行過程中分配和管理資源的基本單位,每一個進程都有一個自己的地址空間。 go語言支援多進程,它執行緒模型是MPG模型,整體上Go程與內核執行緒是多對多對應的。
本教學操作環境:windows7系統、GO 1.18版本、Dell G3電腦。
進程就是程式在作業系統中的一次執行過程,是由系統進行資源分配和調度的基本單位,進程是一個動態概念,是程式在執行過程中分配和管理資源的基本單位,每一個進程都有一個自己的位址空間。一個行程至少有5種基本狀態:初始態、執行態、等待狀態、就緒狀態、終止狀態。
通俗講:流程就是一個正在執行的程式。
執行緒是一個行程的執行實例,是程式執行的最小單元,它是比行程更小的能獨立運作的基本單位。
通俗講:一個行程可以建立多個線程,同一個行程中的多個執行緒可以並發執行,一個程式要運行的話至少有一個行程。
多個執行緒同時競爭一個位置,競爭到的才可以執行,每一個時間段只有一個執行緒在執行。
#多個執行緒可以同時執行,每一個時間段,可以有多個執行緒同時執行。
#多執行緒程式在單核心cpu上運行就是並發,在多核心cpu上運行就是並行。如果執行緒數大於cpu核數,則多執行緒程式在多個cpu上既有並發也有並行。
package main import "fmt" func test() { for i := 0; i2. 加入go
package main import "fmt" func test() { for i := 0; i3. 加入時間
package main import ( "fmt" "time" ) // 加入时间 func test1() { for i := 0; i4. 主執行緒執行快的情況
package main import ( "fmt" "time" ) func test1() { for i := 0; i5. sync .WaitGroup解決不等待
package main import ( "fmt" "time" "sync" ) var wg sync.WiatGroup func test2() { for i := 0; i6. 多協程並行執行
package main import ( "fmt" "time" "sync" ) func hello(num int) { defer wg.Done() for i := 0; i五、設定golang執行時間所佔用的cpu核數量(不是很重要)
package main import ( "fmt" "runtime" ) func main() { // 设置程序占用几个cpu进行执行,默认是全部 // 获取计算机cpu个数 cpuNum := runtime.NumCPU() fmt.Println(cpuNum) // 6 我本机电脑是6核cpu // 设置占用cpu个数 runtime.GOMAXPROCS(2) fmt.Println("ok") }登入後複製
更多程式相關知識,請造訪:程式設計影片! !
以上是golang有進程嗎的詳細內容。更多資訊請關注PHP中文網其他相關文章!