Rumah >pembangunan bahagian belakang >Golang >Apa yang Berlaku kepada Goroutine yang Belum Selesai Apabila Goroutine Ibu Bapa Mereka Keluar?
Apabila goroutine utama atau induk keluar dalam program Go, goroutine yang belum selesai akan berakhir secara mendadak. Keseluruhan sistem masa jalan dimatikan, tidak memberi ruang untuk mereka terus berjalan, menunggu atau membatalkan. Fenomena ini boleh diibaratkan seperti kertas kilat menyala dan hilang serta-merta.
Dalam coretan kod yang diberikan daripada buku pengaturcaraan Go, apabila mirroredQuery kembali, jika goroutine utama keluar, kedua-dua goroutine perlahan akan tidak lagi wujud. serta-merta, tanpa mengira keadaan semasa mereka. Ini boleh dianggap sebagai kebocoran goroutine, tetapi memandangkan keseluruhan proses ditamatkan, sumber yang diperuntukkan akan dibersihkan secara automatik.
Walau bagaimanapun, jika goroutine utama masih berjalan selepas mirroredQuery kembali, goroutine yang belum selesai akan terus berjalan sehingga mereka:
Dalam kes ini, mereka akan menghantar respons mereka kepada saluran dan kemudian kembali. Setelah semua goroutine dikembalikan, saluran akan menahan respons sebagai kebocoran sumber kecil. Tetapi kerana tiada rujukan yang tinggal kepada saluran itu, ia akhirnya akan dikumpul sampah bersama-sama dengan rentetan yang terkandung di dalamnya.
Menggunakan saluran penimbal dalam situasi ini memastikan bahawa goroutin tidak terhalang dan terus berjalan sehingga ia dapat menyelesaikan tugasan mereka. Dalam kes saluran yang tidak dibuffer, goroutin yang hilang akan disekat, menyebabkan saluran dan sumbernya kekal diperuntukkan selama-lamanya.
Atas ialah kandungan terperinci Apa yang Berlaku kepada Goroutine yang Belum Selesai Apabila Goroutine Ibu Bapa Mereka Keluar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!