Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Adakah golang mempunyai proses?

Adakah golang mempunyai proses?

青灯夜游
青灯夜游asal
2022-12-26 17:38:274901semak imbas

golang mempunyai proses. Proses ialah proses pelaksanaan program dalam sistem pengendalian, dan merupakan unit asas untuk pengagihan dan penjadualan sumber oleh sistem; program. Setiap proses mempunyai ruang alamat sendiri. Bahasa go menyokong berbilang proses, dan model utasnya ialah model MPG Secara umum, terdapat perhubungan banyak-ke-banyak antara proses Go dan utas kernel.

Adakah golang mempunyai proses?

Persekitaran pengendalian tutorial ini: sistem Windows 7, GO versi 1.18, komputer Dell G3.

1. Mengenai proses dan rangkaian

1 Proses

Proses ialah atur cara dalam sistem pengendalian Satu pelaksanaan. proses adalah unit asas untuk peruntukan sumber dan penjadualan oleh sistem Proses adalah konsep dinamik dan unit asas untuk peruntukan dan pengurusan sumber semasa pelaksanaan program. Satu proses mempunyai sekurang-kurangnya 5 keadaan asas: keadaan awal, keadaan pelaksanaan, keadaan menunggu, keadaan sedia dan keadaan penamatan.

Dalam istilah orang awam: Proses ialah program pelaksanaan.

2. Benang

Benang ialah contoh pelaksanaan proses dan unit terkecil pelaksanaan program Ia adalah unit asas yang lebih kecil daripada proses dan boleh berjalan secara bebas .

Dalam istilah orang awam: Sesuatu proses boleh mencipta berbilang utas, dan berbilang utas dalam proses yang sama boleh dilaksanakan secara serentak Untuk program berjalan, mesti ada sekurang-kurangnya satu proses .

Adakah golang mempunyai proses?

Adakah golang mempunyai proses?

2 Perihal konkurensi dan selari

1. Concurrency

Berbilang utas bersaing untuk kedudukan pada masa yang sama, dan hanya yang bersaing boleh dilaksanakan Hanya satu utas sedang dilaksanakan dalam setiap tempoh masa.

Adakah golang mempunyai proses?

2. Selari

Berbilang utas boleh dilaksanakan pada masa yang sama dalam setiap tempoh masa, berbilang utas boleh dilaksanakan pada masa yang sama.

Adakah golang mempunyai proses?

3. Dalam istilah awam

Program berbilang benang yang dijalankan pada CPU teras tunggal adalah serentak, dan berjalan pada CPU berbilang teras adalah serentak. Jika bilangan utas lebih besar daripada bilangan teras CPU, program berbilang benang akan serentak dan selari pada berbilang CPU.

3. Goroutine coroutine dan utas utama

1 thread utama

boleh difahami sebagai a benang atau Proses, berbilang coroutine boleh didayakan pada utas utama program golang. Coroutine berbilang dalam golang boleh mencapai konkurensi atau selari.

2. Coroutines

boleh difahami sebagai thread peringkat pengguna, yang telus kepada kernel, iaitu sistem tidak mengetahui kewujudan coroutine. Ia dijadualkan sepenuhnya oleh program pengguna sendiri. Ciri utama golang ialah ia menyokong coroutine secara asli dari perspektif bahasa Anda boleh membuat coroutine dengan menambahkan kata kunci go di hadapan fungsi atau kaedah. Boleh dikatakan coroutine dalam golang ialah goroutine.

Adakah golang mempunyai proses?

Multi-coroutine di Golang agak serupa dengan multi-threading dalam bahasa lain.

3. Multi-coroutine dan multi-threading

Setiap goroutine (coroutine) dalam Golang menduduki lebih sedikit memori secara lalai daripada thread dalam Java dan C. Benang OS (benang sistem pengendalian) secara amnya mempunyai ingatan tindanan tetap (biasanya kira-kira 2MB) Sebuah goroutine (coroutine) menduduki memori yang sangat kecil, hanya kira-kira 2KB Overhed penjadualan goroutine berbilang goroutine adalah lebih kurang daripada benang. Ini adalah salah satu sebab mengapa semakin banyak syarikat besar menggunakan Golang.

4. Operasi praktikal kata kunci go

1. Pelaksanaan berurutan

package main

import "fmt"

func test() {
	for i := 0; i <h3 id="2.%20%E5%8A%A0%E5%85%A5go"><strong>2 ></strong></h3><pre class="brush:php;toolbar:false">package main

import "fmt"

func test() {
	for i := 0; i <h3 id="3.%20%E5%8A%A0%E5%85%A5%E6%97%B6%E9%97%B4">3. Masa penyertaan<strong></strong>
</h3><pre class="brush:php;toolbar:false">package main

import (
    "fmt"
    "time"
)

// 加入时间
func test1() {
	for i := 0; i <h3 id="4.%20%E4%B8%BB%E7%BA%BF%E7%A8%8B%E6%89%A7%E8%A1%8C%E5%BF%AB%E7%9A%84%E6%83%85%E5%86%B5">4. Benang utama dilaksanakan dengan cepat<strong></strong>
</h3><pre class="brush:php;toolbar:false">package main

import (
    "fmt"
    "time"
)

func test1() {
	for i := 0; i <h3 id="5.%20sync.WaitGroup%E8%A7%A3%E5%86%B3%E4%B8%8D%E7%AD%89%E5%BE%85">5. sync.WaitGroup menyelesaikan masalah tidak menunggu<strong></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="6.%20%E5%A4%9A%E5%8D%8F%E7%A8%8B%E5%B9%B6%E5%8F%91%E5%B9%B6%E8%A1%8C%E6%89%A7%E8%A1%8C">6 Pelaksanaan serentak berbilang coroutine secara selari<strong></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 5. Tetapkan bilangan teras CPU yang diduduki oleh golang semasa berjalan (tidak terlalu penting) <h2 id="%E4%BA%94%E3%80%81%E8%AE%BE%E7%BD%AEgolang%E8%BF%90%E8%A1%8C%E6%97%B6%E5%8D%A0%E7%94%A8%E7%9A%84cpu%E6%A0%B8%E6%95%B0%E9%87%8F%EF%BC%88%E4%B8%8D%E6%98%AF%E5%BE%88%E9%87%8D%E8%A6%81%EF%BC%89"><strong></strong></h2>Untuk lebih banyak pengetahuan berkaitan pengaturcaraan, sila lawati: <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")
}
Video Pengaturcaraan

! !

Atas ialah kandungan terperinci Adakah golang mempunyai proses?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Siapakah pengarang golang?Artikel seterusnya:Siapakah pengarang golang?