Fungsi golang dan kitaran hayat goroutine
Apr 25, 2024 pm 02:54 PMKitar Hayat Fungsi: Pengisytiharan dan Penyusunan: Pengkompil mengesahkan sintaks dan jenis fungsi. Perlaksanaan: Dilaksanakan apabila fungsi dipanggil. Kembali: Kembali ke lokasi panggilan selepas pelaksanaan. Kitaran hayat Goroutine: Penciptaan dan permulaan: Buat dan mulakan melalui kata kunci pergi. Perlaksanaan: Berjalan tidak segerak sehingga tugasan selesai. Tamat: Tugas tamat apabila ia selesai atau ralat berlaku. Pembersihan: Pengumpul sampah membersihkan memori yang diduduki oleh Goroutine yang telah siap.
Kitaran hayat fungsi Golang dan Goroutines
Kitaran hayat fungsi
Di Golang, fungsi disusun serta-merta selepas ia diisytiharkan, dan proses pelaksanaan berlaku pada masa jalankan. Kitaran hayat fungsi adalah seperti berikut:
- Pengisytiharan dan Penyusunan: Pengkompil menghuraikan dan mengesahkan sintaks dan jenis fungsi.
- Pelaksanaan: Fungsi akan dilaksanakan hanya apabila kod dilaksanakan pada panggilan fungsi.
- Kembali: Selepas fungsi dilaksanakan, aliran kawalan kembali ke lokasi di mana ia dipanggil.
Kitaran hayat Goroutine
Goroutine ialah benang ringan dalam bahasa Go. Kitaran hayatnya adalah seperti berikut:
-
Penciptaan dan permulaan: Buat Goroutine melalui kata kunci
go
dan mulakannya dengan segera.go
关键字创建 Goroutine 并立即启动。 - 执行:Goroutine 异步运行,直到完成其任务。
- 结束:当 Goroutine 完成其任务或者出现错误时,它会结束。
- 清理:垃圾回收器会自动清理结束的 Goroutine 占用的内存。
实战案例:并行执行任务
考虑以下案例:我们想并行执行多个任务,例如计算素数的列表。
package main import ( "fmt" "sync" "time" ) // 函数检查给定数字是否是素数。 func isPrime(n int) bool { if n <= 1 { return false } for i := 2; i*i <= n; i++ { if n%i == 0 { return false } } return true } func main() { // 创建一个等待组以等待所有 Goroutine 完成。 var wg sync.WaitGroup // 创建和启动一个 Goroutine 来检查每个数字是否是素数。 for i := 1; i <= 100; i++ { wg.Add(1) go func(i int) { defer wg.Done() // Goroutine 完成后调用 Done() 以减少等待组计数。 if isPrime(i) { fmt.Println(i) } }(i) } // 等待所有 Goroutine 完成。 wg.Wait() }
在这个案例中:
-
isPrime
函数负责检查给定的数字是否是素数。 -
main
函数创建和启动一个 Goroutine 来并行检查每个数字是否是素数。 -
sync.WaitGroup
用于确保在所有 Goroutine 完成之前主程序不会退出。 defer wg.Done()
- 🎜
isPrime
bertanggungjawab untuk menyemak sama ada nombor yang diberikan adalah perdana. 🎜🎜Fungsi sync.WaitGroup
digunakan untuk memastikan program utama tidak keluar sebelum semua Goroutines selesai. 🎜🎜tunda wg.Done()
Memastikan setiap Goroutine mengurangkan kiraan kumpulan menunggu setelah selesai. 🎜🎜Atas ialah kandungan terperinci Fungsi golang dan kitaran hayat goroutine. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Artikel Panas

Alat panas Tag

Artikel Panas

Tag artikel panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Bagaimana untuk mengkonfigurasi kolam sambungan untuk sambungan pangkalan data Golang?

Bagaimana untuk membaca dan menulis fail dengan selamat menggunakan Golang?

Persamaan dan Perbezaan antara Golang dan C++

Seberapa curam keluk pembelajaran seni bina rangka kerja golang?

Bagaimana untuk menjana elemen rawak dari senarai di Golang?

Perbandingan kebaikan dan keburukan rangka kerja golang

arahan penggunaan dokumen rangka kerja golang

Apakah amalan terbaik untuk pengendalian ralat dalam rangka kerja Golang?
