Rumah > pembangunan bahagian belakang > Golang > Cara menggunakan golang concurrency

Cara menggunakan golang concurrency

PHPz
Lepaskan: 2023-04-25 15:31:00
asal
545 orang telah melayarinya

Dengan perkembangan komputer dan popularisasi Internet, permintaan untuk prestasi tinggi dan keselarasan tinggi menjadi semakin biasa. Pengaturcaraan serentak secara semula jadi menjadi salah satu topik utama hari ini, dan bahasa Golang, dengan ciri yang cekap, ringkas dan selamat, telah menjadi bahasa pilihan untuk lebih banyak perusahaan untuk memilih pengaturcaraan serentak. Artikel ini akan bermula daripada konsep asas pengaturcaraan serentak di Golang dan kaedah pelaksanaan pengaturcaraan serentak dalam aplikasi praktikal.

1. Apakah itu pengaturcaraan serentak
Pengaturcaraan serentak merujuk kepada keupayaan untuk mempunyai beberapa tugas pelaksanaan dalam program pada masa yang sama, iaitu, beberapa utas melaksanakan tugas dalam tempoh masa yang sama. Concurrency tidak bermaksud paralelisme, kerana paralelisme merujuk kepada pelaksanaan serentak pelbagai tugas pada masa yang sama. Dalam bahasa Golang, Goroutine dan Channel boleh digunakan untuk melaksanakan pengaturcaraan serentak.

Goroutine ialah utas ringan yang unik kepada bahasa Go yang boleh melaksanakan berbilang tugas secara serentak dalam proses yang sama, manakala Saluran ialah saluran yang menyelaraskan penghantaran data antara Goroutines.

2. Cara membuat dan memulakan Goroutine
Apabila Golang memanggil fungsi, jika kata kunci go ditambahkan di hadapan fungsi, Goroutine baharu boleh dibuat untuk melaksanakan fungsi, contohnya:

package main
import (
    "fmt"
    "time"
)
func main() {
    go func() {
        // 执行任务
        fmt.Println("Goroutine 运行中...")
    }()
    // 执行主线程任务
    time.Sleep(time.Millisecond * 500)
    fmt.Println("主线程执行完成!")
}
Salin selepas log masuk

Dalam kod ini, Goroutine baharu dicipta melalui kata kunci go dan tugasan dilaksanakan di dalamnya. Pada masa ini, urutan pelaksanaan fungsi utama tidak akan diperlahankan, kerana proses pelaksanaan telah diserahkan kepada Goroutine yang baru dibuat.

3. Cara menggunakan Saluran untuk komunikasi
Untuk pengaturcaraan serentak, komunikasi antara GOROUTINE adalah penting. Golang menyediakan Saluran untuk memindahkan data antara Goroutines, yang merupakan mekanisme komunikasi yang sangat mudah dan cekap. Saluran pada asasnya ialah baris gilir data selamat jenis yang boleh dibuat menggunakan fungsi make.

Berikut ialah contoh menggunakan Saluran untuk penghantaran data:

package main
import (
    "fmt"
    "time"
)
func main() {
    c := make(chan int)
    go func() {
        // 子线程向 Channel 发送数据
        for i := 1; i <= 10; i++ {
            c <- i
            time.Sleep(time.Millisecond * 100)
        }
        close(c)
    }()
    // 主线程接收 Channel 中的数据
    for num := range c {
        fmt.Println("Channel 接收到数据:", num)
    }
    fmt.Println("主线程执行完成!")
}
Salin selepas log masuk

Dalam kod ini, Saluran integer dicipta melalui fungsi buat dan kami terus Menambah nombor pada Saluran dan gunakan masa.Kaedah tidur untuk membuat utas kanak-kanak menunggu selama 100ms supaya terdapat lebih banyak data dalam Saluran apabila utas utama sedang berjalan, gunakan gelung untuk julat dalam utas utama untuk menunggu ketibaan data dalam Salurkan dan cetak Keluarkan nombor yang diterima setiap kali. Perlu diingatkan bahawa apabila menghantar data ke Saluran dalam benang kanak-kanak, anda perlu menggunakan kaedah tutup, jika tidak, benang utama akan menunggu dalam gelung.

Ringkasan
Pengaturcaraan serentak di Golang adalah tugas yang sukar, yang memerlukan pembangun mempertimbangkan segala-galanya semasa menulis kod, terutamanya dalam aspek seperti perkongsian sumber dan kebuntuan, yang memerlukan perhatian khusus. Walau bagaimanapun, dalam aplikasi sebenar, penggunaan Goroutine dan Channel secara berkesan dapat menyelesaikan masalah konkurensi berbilang benang dan menjadikan program berjalan dengan lebih cekap.

Sebagai bahasa yang cekap, ketat, selamat dan mudah dipelajari, Golang mempunyai set kaedah uniknya sendiri untuk pengaturcaraan serentak, yang membawa kemudahan besar kepada kerja pembangun.

Atas ialah kandungan terperinci Cara menggunakan golang concurrency. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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