Rumah >pembangunan bahagian belakang >Golang >Mengapakah `time.Sleep()` Penting untuk Pelaksanaan Goroutine yang Betul dalam Go?
Kepentingan masa.Sleep in Goroutines: Memastikan Pelaksanaan
Dalam Go, goroutine mendayakan pengaturcaraan serentak, membenarkan berbilang tugasan dijalankan serentak. Walau bagaimanapun, senario tertentu mungkin memerlukan penggunaan masa. Tidur untuk memudahkan pelaksanaan yang betul.
Pertimbangkan coretan kod berikut daripada tutorial Go:
package main import ( "fmt" "time" ) func say(s string) { for i := 0; i < 5; i++ { time.Sleep(100 * time.Millisecond) fmt.Println(s) } } func main() { go say("world") say("hello") }
Apabila kod ini dilaksanakan, "hello " dan "dunia" akan dicetak ke skrin secara bergantian lima kali. Walau bagaimanapun, jika masa.Sleep dialih keluar, hanya "hello" akan dicetak lima kali.
Mengapakah masa.Sleep penting untuk pelaksanaan goroutine? Jawapannya terletak pada sifat bukan preemptif penjadual Go. Goroutine tidak mendahului satu sama lain, bermakna mereka mesti memberikan kawalan secara jelas untuk membolehkan goroutine lain berjalan.
Jika tiada masa.Tidur, goroutine utama (katakan("hello")) tidak akan melepaskan kawalan , menghalang goroutine katakan("dunia") daripada berjalan. Akibatnya, hanya output goroutine utama dicetak dan goroutine kedua ditamatkan dengan berkesan apabila fungsi main() kembali.
Oleh itu, time.Sleep berfungsi sebagai titik hasil, membenarkan kata("dunia ") goroutine untuk memperoleh masa CPU dan melaksanakan kodnya. Dengan memperkenalkan kelewatan dalam goroutine utama, time.Sleep mewujudkan peluang untuk goroutine sekunder untuk menyelang operasinya.
Kesimpulannya, masa.Tidur adalah penting dalam senario goroutine tertentu untuk memastikan semua goroutine diberi peluang untuk melaksanakan. Penggunaannya sebagai titik hasil menghalang isu preemption dan membolehkan pengaturcaraan serentak beroperasi seperti yang dimaksudkan.
Atas ialah kandungan terperinci Mengapakah `time.Sleep()` Penting untuk Pelaksanaan Goroutine yang Betul dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!