Percanggahan Antara Go Playground dan Go on Your Machine: Goroutine Execution
Untuk menyelesaikan kekeliruan mengenai pelaksanaan Goroutine, coretan kod telah dilaksanakan pada kedua-duanya Go Playground dan mesin tempatan. Taman Permainan menghasilkan ralat "Proses mengambil masa terlalu lama," mencadangkan penciptaan Goroutine yang berjalan secara berterusan, manakala mesin tempatan menghasilkan output hampir serta-merta. Ini menimbulkan persoalan sama ada fungsi Goroutine dalam other() terkeluar apabila Goroutine utama selesai atau terus berjalan di latar belakang.
Penjelasan
Taman Permainan On the Go , GOMAXPROCS ditetapkan kepada 1. Ini menunjukkan bahawa hanya satu Goroutine dilaksanakan pada satu masa. Tanpa menyekat, penjadual tidak akan bertukar kepada Goroutine lain.
Dalam kod, Goroutine utama bermula dan menyekat pada saluran yang telah selesai. Penjadual mesti bertukar kepada yang lain() Goroutine, yang menghantar nilai pada saluran selesai, menjadikan kedua-dua Goroutines boleh dijalankan. Penjadual memilih untuk terus melaksanakan other(). Memandangkan GOMAXPROCS ialah 1, Goroutine utama kekal disekat.
other() kemudian melancarkan Goroutine gelung tak terhingga. Goroutine ini terus berjalan, menghalang Goroutine utama daripada menyambung semula. Akibatnya, tamat masa Taman Permainan berlaku.
Secara tempatan, GOMAXPROCS biasanya melebihi 1. Akibatnya, semasa gelung tak terhingga Goroutine sedang berjalan, Goroutine lain (kemungkinan Goroutine utama) dilaksanakan serentak. Apabila Goroutine utama kembali, program ditamatkan, kerana ia tidak menunggu penyiapan Goroutine bukan utama yang lain.
Go Playground Modification
Dengan menetapkan GOMAXPROCS secara eksplisit kepada 1 di Go Playground, adalah mungkin untuk menghasilkan semula tingkah laku "Proses mengambil masa terlalu lama". Sebaliknya, menetapkan GOMAXPROCS kepada nilai yang lebih tinggi, seperti 2, selalunya akan menghasilkan perintah pelaksanaan yang berbeza dan penamatan yang berjaya tanpa tamat masa.
Atas ialah kandungan terperinci Mengapa Tamat Masa Go Playground Semasa Menjalankan Kod Yang Sama pada Mesin Tempatan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!