Rumah > pembangunan bahagian belakang > Golang > Mengapakah `time.Sleep` Mendayakan Pelaksanaan Goroutine Serentak dalam Go?

Mengapakah `time.Sleep` Mendayakan Pelaksanaan Goroutine Serentak dalam Go?

Susan Sarandon
Lepaskan: 2024-12-05 15:40:10
asal
563 orang telah melayarinya

Why Does `time.Sleep` Enable Concurrent Goroutine Execution in Go?

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan