golang有進程。進程就是程式在作業系統中的一次執行過程,是由系統進行資源分配和調度的基本單位;進程是一個動態概念,是程式在執行過程中分配和管理資源的基本單位,每一個進程都有一個自己的地址空間。 go語言支援多進程,它執行緒模型是MPG模型,整體上Go程與內核執行緒是多對多對應的。
本教學操作環境:windows7系統、GO 1.18版本、Dell G3電腦。
一、關於行程與執行緒
1. 進程(Process)
進程就是程式在作業系統中的一次執行過程,是由系統進行資源分配和調度的基本單位,進程是一個動態概念,是程式在執行過程中分配和管理資源的基本單位,每一個進程都有一個自己的位址空間。一個行程至少有5種基本狀態:初始態、執行態、等待狀態、就緒狀態、終止狀態。
通俗講:流程就是一個正在執行的程式。
2. 執行緒
執行緒是一個行程的執行實例,是程式執行的最小單元,它是比行程更小的能獨立運作的基本單位。
通俗講:一個行程可以建立多個線程,同一個行程中的多個執行緒可以並發執行,一個程式要運行的話至少有一個行程。
1.並發
多個執行緒同時競爭一個位置,競爭到的才可以執行,每一個時間段只有一個執行緒在執行。
2. 並行
#多個執行緒可以同時執行,每一個時間段,可以有多個執行緒同時執行。
3. 通俗講
#多執行緒程式在單核心cpu上運行就是並發,在多核心cpu上運行就是並行。如果執行緒數大於cpu核數,則多執行緒程式在多個cpu上既有並發也有並行。
三、goroutine協程以及主執行緒
#1. 主執行緒
##可以理解為執行緒或進程,在一個golang程式的主執行緒上可以啟用多個協程。 golang中多協程可以實現並發或並行。2. 協程
可以理解為使用者層級的線程,這是對核心透明的,也就是係統並不知道有協程的存在,是完全由使用者自己的程式進行調度的。 golang的一大特色就是從語言方面原生支援協程,在函數或方法前面加上一個go關鍵字就可以創造一個協程。可以說golang中的協程就是goroutine。3. 多協程與多執行緒
Golang 中每個 goroutine (協程) 預設佔用記憶體遠比 Java 、C 的執行緒少。 OS 線程(作業系統線程)一般都有固定的棧內存(通常為 2MB 左右),一個 goroutine (協程) 佔用內存非常小,只有 2KB 左右,多協程 goroutine 切換調度開銷方面遠比線程要少。這也是為什麼越來越多的大公司使用 Golang 的原因之一。四、go關鍵字實作
1. 順序執行
package main import "fmt" func test() { for i := 0; i <h3 id="strong-加入go-strong"><strong>2. 加入go</strong></h3><pre class="brush:php;toolbar:false">package main import "fmt" func test() { for i := 0; i <h3 id="strong-加入時間-strong"><strong>3. 加入時間</strong></h3><pre class="brush:php;toolbar:false">package main import ( "fmt" "time" ) // 加入时间 func test1() { for i := 0; i <h3 id="strong-主執行緒執行快的情況-strong"><strong>4. 主執行緒執行快的情況</strong></h3><pre class="brush:php;toolbar:false">package main import ( "fmt" "time" ) func test1() { for i := 0; i <h3 id="strong-sync-WaitGroup解決不等待-strong"><strong>5. sync .WaitGroup解決不等待</strong></h3><pre class="brush:php;toolbar:false">package main import ( "fmt" "time" "sync" ) var wg sync.WiatGroup func test2() { for i := 0; i <h3 id="strong-多協程並行執行-strong"><strong>6. 多協程並行執行</strong></h3><pre class="brush:php;toolbar:false">package main import ( "fmt" "time" "sync" ) func hello(num int) { defer wg.Done() for i := 0; i <h2 id="strong-五-設定golang執行時間所佔用的cpu核數量-不是很重要-strong"><strong>五、設定golang執行時間所佔用的cpu核數量(不是很重要)</strong></h2><pre class="brush:php;toolbar:false">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中文網其他相關文章!

Golang在实际应用中表现出色,以简洁、高效和并发性著称。1)通过Goroutines和Channels实现并发编程,2)利用接口和多态编写灵活代码,3)使用net/http包简化网络编程,4)构建高效并发爬虫,5)通过工具和最佳实践进行调试和优化。

Go語言的核心特性包括垃圾回收、靜態鏈接和並發支持。 1.Go語言的並發模型通過goroutine和channel實現高效並發編程。 2.接口和多態性通過實現接口方法,使得不同類型可以統一處理。 3.基本用法展示了函數定義和調用的高效性。 4.高級用法中,切片提供了動態調整大小的強大功能。 5.常見錯誤如競態條件可以通過gotest-race檢測並解決。 6.性能優化通過sync.Pool重用對象,減少垃圾回收壓力。

Go語言在構建高效且可擴展的系統中表現出色,其優勢包括:1.高性能:編譯成機器碼,運行速度快;2.並發編程:通過goroutines和channels簡化多任務處理;3.簡潔性:語法簡潔,降低學習和維護成本;4.跨平台:支持跨平台編譯,方便部署。

關於SQL查詢結果排序的疑惑學習SQL的過程中,常常會遇到一些令人困惑的問題。最近,筆者在閱讀《MICK-SQL基礎�...

golang ...

Go語言中如何對比並處理三個結構體在Go語言編程中,有時需要對比兩個結構體的差異,並將這些差異應用到第�...


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

Dreamweaver Mac版
視覺化網頁開發工具

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SublimeText3漢化版
中文版,非常好用