Rumah >pembangunan bahagian belakang >Golang >Apa itu golang asynchronous

Apa itu golang asynchronous

青灯夜游
青灯夜游asal
2022-12-28 10:54:454446semak imbas

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.

Apa itu golang asynchronous

Persekitaran pengendalian tutorial ini: sistem Windows 7, GO versi 1.18, komputer Dell G3.

Apakah itu tak segerak?

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.

Cara melaksanakan tak segerak dalam golang

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!

Kenyataan:
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