Apa itu golang asynchronous

青灯夜游
Lepaskan: 2022-12-28 10:54:45
asal
4416 orang telah melayarinya

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")
}
Salin selepas log masuk

Hasil:

[全部完成]
Salin selepas log masuk

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()
}
Salin selepas log masuk

Hasil:

work2
work1
[全部完成]
Salin selepas log masuk

【 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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!