Gorutin dan Kepentingan masa.Sleep()
Apabila bekerja dengan goroutines, adalah perkara biasa untuk menghadapi keperluan masa.Sleep( ). Artikel ini menyelami kepentingan masa.Sleep() dalam pelaksanaan goroutine, meneroka akibat meninggalkannya.
Memahami Goroutine
Groutine ialah urutan pelaksanaan yang ringan dalam Pergi. Tidak seperti benang, gorouti diurus oleh masa jalan Go dan berkongsi memori dengan gorouti lain dalam program.
Peranan masa.Sleep()
Dalam contoh yang disediakan , fungsi say() ialah goroutine yang bertanggungjawab untuk mencetak "world" ke skrin. Pernyataan masa.Sleep() secara buatan melambatkan pelaksanaan goroutine selama 100 milisaat setiap lelaran.
Tanpa masa.Sleep()
Jika masa.Sleep() pernyataan dialih keluar, goroutine say("dunia") tidak pernah mendapat peluang untuk dijalankan. Ini kerana penjadual Go goroutine bukan preemptif. Goroutines secara sukarela memberikan kawalan, membenarkan goroutine lain untuk dilaksanakan.
Goroutine Utama
Fungsi utama() dalam contoh ini ialah goroutine utama. Apabila time.Sleep() dialih keluar, goroutine utama melaksanakan say("hello") 5 kali tanpa melepaskan kawalan. Akibatnya, goroutine say("world") tidak akan dapat dijalankan dan hanya "hello" dicetak ke skrin.
Mengekalkan Pelaksanaan Program
Dalam ketiadaan masa.Sleep(), goroutine utama selesai melaksanakan dan program keluar. Ini kerana tiada goroutine lain yang dijalankan untuk memastikan program ini hidup. Sebaliknya, apabila time.Sleep() digunakan, goroutine say("world") menghasilkan kawalan, membolehkan goroutine utama dilaksanakan dan program terus berjalan.
Atas ialah kandungan terperinci Mengapakah `time.Sleep()` Penting untuk Pelaksanaan Goroutine yang Betul?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!