Masa. Tidur dan Pelaksanaan Goroutine
Dalam kod yang disediakan, fungsi time.Sleep memainkan peranan penting dalam membolehkan pelaksanaan goroutin serentak. Apabila time.Sleep diulas, goroutine "dunia" tidak pernah berpeluang untuk berlari.
Sebab bagi tingkah laku ini terletak pada sifat bukan preemptif penjadual goroutine Go. Tidak seperti penjadual preemptive, penjadual Go tidak memaksa gorout yang sedang berjalan untuk menghasilkan kawalan melainkan mereka melepaskannya secara sukarela. Tanpa masa. Tidur, goroutine utama memonopoli kawalan, melengkapkan gelung sebut("hello") lima kali sebelum kembali. Memandangkan goroutine utama bertanggungjawab ke atas pelaksanaan program, program tersebut akan keluar serta-merta selepas itu, tanpa meninggalkan masa untuk goroutine "dunia" untuk dilaksanakan.
Dengan masa.Tidur di tempatnya, goroutine "dunia" boleh berjalan sementara goroutine utama sedang menunggu. Apabila goroutine utama menghasilkan kawalan untuk melaksanakan masa. Tidur, penjadual boleh bertukar kepada goroutine "dunia", membenarkannya melaksanakan lelaran pertamanya sebelum goroutine utama disambung semula. Pergantian kawalan antara gorouti ini memastikan kedua-dua tugasan dapat diselesaikan, menghasilkan output yang diharapkan dengan "dunia" dan "hello" dicetak ke skrin secara bergantian.
Atas ialah kandungan terperinci Mengapakah `time.Sleep` Mendayakan Pelaksanaan Goroutine Serentak dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!