Apabila bekerja dengan tamat masa dan menunggu dalam Go, pembangun mempunyai pelbagai pilihan seperti masa. Tidur, menyekat ticker, dan pilih berbilang. Panduan ini menyelidiki mekanisme asas operasi ini dan kecekapannya.
masa.Tidur menangguhkan goroutine semasa untuk tempoh yang ditetapkan buat sementara waktu. Apabila pemasa tamat tempoh, goroutine akan dibangunkan dan dijadualkan untuk menyambung semula pelaksanaan. Operasi ini berinteraksi secara langsung dengan masa jalan Go, meletakkan goroutine dalam keadaan menunggu sehingga pemasa tamat tempoh.
Tickers mencipta saluran yang menghantar nilai pada yang ditentukan selang waktu. Dalam contoh kod, t.C mewakili saluran penanda. Apabila menunggu di saluran ini, goroutine menangguhkan pelaksanaan sehingga kutu tiba. Di bawah tudung, ini serupa dengan masa.Tidur. Goroutine diletakkan dan acara pemasa membangunkannya apabila tanda itu berlaku.
pilih membenarkan goroutin menunggu pada berbilang saluran serentak. Apabila menggunakan berbilang saluran dalam pilihan, goroutine akan menyekat sehingga salah satu saluran mempunyai data untuk diterima. Jika berbilang saluran mempunyai data, satu dipilih secara tidak pasti. Seperti masa.Sleep dan tickers, pelaksanaan asas melibatkan goroutine yang diletak sehingga data tiba pada saluran.
Dengan mengandaikan lainChan kekal kosong, masa.Tidur dan menyekat ticker akan dilaksanakan hampir sama mengenai penggunaan sumber. Goroutine diletakkan dalam kedua-dua kes, meninggalkan CPU percuma untuk tugas lain. Walau bagaimanapun, saluran mempunyai overhed lebih sedikit.
Dengan berbilang saluran dalam pilihan, overhed adalah lebih tinggi sedikit kerana goroutine mesti menjejaki berbilang saluran dan berpotensi bertukar antara saluran tersebut. Kecekapan bergantung pada bilangan saluran dan kekerapan ketibaan data.
Memahami gelagat asas operasi menyekat adalah penting dalam mereka bentuk program Go yang cekap. masa.Tidur, tickers, dan pilih menyediakan mekanisme yang berbeza untuk menjeda pelaksanaan, masing-masing dengan kelebihan dan pertimbangan overhed. Dengan memanfaatkan alatan ini dengan berkesan, pembangun boleh mengoptimumkan prestasi kod mereka.
Atas ialah kandungan terperinci Sejauh manakah `time.Sleep`, Tickers dan `select` dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!