Rumah > Artikel > pembangunan bahagian belakang > Adakah golang mempunyai proses?
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.
Persekitaran pengendalian tutorial ini: sistem Windows 7, GO versi 1.18, komputer Dell G3.
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.
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 .
Berbilang utas bersaing untuk kedudukan pada masa yang sama, dan hanya yang bersaing boleh dilaksanakan Hanya satu utas sedang dilaksanakan dalam setiap tempoh masa.
Berbilang utas boleh dilaksanakan pada masa yang sama dalam setiap tempoh masa, berbilang utas boleh dilaksanakan pada masa yang sama.
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.
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.
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.
Multi-coroutine di Golang agak serupa dengan multi-threading dalam bahasa lain.
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.
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!