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中文網其他相關文章!

go语言有缩进。在go语言中,缩进直接使用gofmt工具格式化即可(gofmt使用tab进行缩进);gofmt工具会以标准样式的缩进和垂直对齐方式对源代码进行格式化,甚至必要情况下注释也会重新格式化。

go语言叫go的原因:想表达这门语言的运行速度、开发速度、学习速度(develop)都像gopher一样快。gopher是一种生活在加拿大的小动物,go的吉祥物就是这个小动物,它的中文名叫做囊地鼠,它们最大的特点就是挖洞速度特别快,当然可能不止是挖洞啦。

是,TiDB采用go语言编写。TiDB是一个分布式NewSQL数据库;它支持水平弹性扩展、ACID事务、标准SQL、MySQL语法和MySQL协议,具有数据强一致的高可用特性。TiDB架构中的PD储存了集群的元信息,如key在哪个TiKV节点;PD还负责集群的负载均衡以及数据分片等。PD通过内嵌etcd来支持数据分布和容错;PD采用go语言编写。

go语言能编译。Go语言是编译型的静态语言,是一门需要编译才能运行的编程语言。对Go语言程序进行编译的命令有两种:1、“go build”命令,可以将Go语言程序代码编译成二进制的可执行文件,但该二进制文件需要手动运行;2、“go run”命令,会在编译后直接运行Go语言程序,编译过程中会产生一个临时文件,但不会生成可执行文件。

go语言需要编译。Go语言是编译型的静态语言,是一门需要编译才能运行的编程语言,也就说Go语言程序在运行之前需要通过编译器生成二进制机器码(二进制的可执行文件),随后二进制文件才能在目标机器上运行。

删除map元素的两种方法:1、使用delete()函数从map中删除指定键值对,语法“delete(map, 键名)”;2、重新创建一个新的map对象,可以清空map中的所有元素,语法“var mapname map[keytype]valuetype”。


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

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

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具