Dalam golang, tak segerak merujuk kepada pelaksanaan yang tidak mengikut susunan kod Pelaksanaan proses tak segerak tidak lagi mempunyai hubungan berurutan dengan urutan asal, apabila panggilan proses tak segerak dikeluarkan, pemanggil Anda boleh terus melakukan operasi seterusnya sebelum mendapat keputusan. Golang asynchronous terutamanya dilaksanakan oleh coroutine (goroutine digunakan untuk memanggil fungsi apabila sesuatu fungsi dipanggil oleh kata kunci go, go akan mencipta perkara seperti coroutine untuk melaksanakan fungsi itu, supaya ia boleh dicapai dengan mudah.
Persekitaran pengendalian tutorial ini: sistem Windows 7, GO versi 1.18, komputer Dell G3.
Asynchronous (async) ialah konsep yang bertentangan dengan segerak (Synchronous, sync). Dalam pengaturcaraan berbenang tunggal tradisional yang kami pelajari, jalankan atur cara adalah segerak (segerak tidak bermakna semua langkah berjalan pada masa yang sama, tetapi bermakna langkah-langkah itu dilaksanakan secara berurutan dalam urutan aliran kawalan). Konsep asynchronous ialah konsep yang tidak menjamin penyegerakan Maksudnya, pelaksanaan proses tak segerak tidak lagi mempunyai hubungan berurutan dengan urutan asal.
Pemahaman mudah ialah: penyegerakan dilaksanakan mengikut susunan kod anda, pelaksanaan tak segerak tidak mengikut susunan kod dan pelaksanaan tak segerak adalah lebih cekap.
Penjelasan lain ialah:
Beri anda dua bekas, satu dipanggil penyegerakan dan satu lagi dipanggil tak segerak, dan kod yang akan dilaksanakan dibahagikan kepada penyegerakan dan tak segerak masing-masing, laksanakan penyegerakan dahulu dan tunggu kompilasi tak segerak pada masa yang sama, dan kemudian laksanakan kod tak segerak selepas penyegerakan selesai.
Asynchronous Go terutamanya dilaksanakan oleh coroutine (goroutine). Berbanding dengan benang, coroutine menduduki kurang memori dan lebih ringan, yang juga merupakan kelebihan prestasi Go.
Bahasa Go ialah bahasa pengaturcaraan serentak. Terdapat kata kunci yang sangat penting go (goroutine) Secara umumnya, kita boleh menggunakannya untuk melakukan beberapa tugasan tak segerak dan serentak.
Goroutine digunakan untuk memanggil fungsi Apabila fungsi dipanggil oleh kata kunci go, go akan mencipta perkara seperti coroutine untuk melaksanakan fungsi itu, supaya konkurensi boleh dicapai dengan mudah.
Contoh:
package main import ( "fmt" ) func main() { go work1() go work2() fmt.Println("[全部完成]") } func work1(){ fmt.Println("work1") } func work2(){ fmt.Println("work2") }
Hasil:
[全部完成]
Sudah tentu ini contoh yang tidak sesuai, tetapi ia juga membuktikan pelaksanaan tak segerak, apabila memanggil work1, work2 Selepas itu , pelaksanaan diteruskan tanpa menunggu hasil output.
Untuk menunggu pelaksanaan tak segerak selesai sebelum melaksanakan output akhir, anda perlu menyertai WaitGroup
Contoh yang betul:
package main import ( "fmt" "sync" ) var waitGroup sync.WaitGroup func main() { waitGroup.Add(2) go work1() go work2() waitGroup.Wait() fmt.Println("[全部完成]") } func work1(){ fmt.Println("work1") waitGroup.Done() } func work2(){ fmt.Println("work2") waitGroup.Done() }
Hasil:
work2 work1 [全部完成]
【 Cadangan berkaitan: Pergi tutorial video, Pengajaran pengaturcaraan]
Atas ialah kandungan terperinci Apa itu golang asynchronous. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!