cari
Rumahpembangunan bahagian belakangGolangGolang menggunakan Saluran untuk melaksanakan pengagihan tugas dan pengagregatan hasil

Golang menggunakan Saluran untuk melaksanakan pengagihan tugas dan pengagregatan hasil

Pengenalan:
Dalam pengaturcaraan serentak, pengagihan tugas dan pengagregatan hasil adalah keperluan biasa. Saluran di Golang menyediakan cara yang ringkas dan berkesan untuk melaksanakan corak pengagihan tugas dan pengagregatan hasil ini. Artikel ini akan memperkenalkan cara menggunakan Saluran untuk melaksanakan pengagihan tugas dan pengagregatan hasil serta memberikan contoh kod yang sepadan.

  1. Pengagihan tugas:
    Pengagihan tugas merujuk kepada pengagihan tugas kepada coroutine kerja serentak untuk diproses. Di Golang, satu atau lebih Saluran boleh digunakan untuk mengagihkan tugas. Senario biasa adalah untuk mendapatkan tugas daripada sumber data luaran dan menghantar tugasan ke saluran tugas untuk diproses oleh coroutine pekerja.

Berikut ialah contoh kod ringkas yang melaksanakan proses mendapatkan tugas daripada sumber data luaran dan menghantar tugasan ke saluran tugas:

package main

import (
    "fmt"
)

func main() {
    tasks := make(chan string)

    go func() {
        for i := 0; i < 10; i++ {
            task := fmt.Sprintf("Task %d", i)
            tasks <- task
        }
        close(tasks)
    }()

    for task := range tasks {
        fmt.Println(task)
    }
}

Dalam contoh di atas, kami mencipta tugas saluran jenis rentetan dan menghantar 10 tugas ke saluran melalui fungsi tanpa nama. Akhirnya, tugasan dalam saluran dilalui melalui kata kunci julat dan kandungan tugasan adalah output.

  1. Pengagregatan hasil:
    Pengagregatan hasil merujuk kepada pengagregatan hasil tugasan yang disiapkan oleh coroutine kerja. Di Golang, anda boleh menggunakan satu atau lebih Saluran untuk menerima hasil tugasan yang diselesaikan oleh coroutine pekerja dan mengagregatkan hasilnya. Senario biasa ialah menghantar hasil yang diproses oleh setiap coroutine pekerja ke saluran hasil, dan kemudian mengagregatkan hasil dengan merentasi saluran hasil.

Berikut ialah contoh kod ringkas yang melaksanakan proses menghantar hasil tugasan yang dilengkapkan oleh coroutine kerja ke saluran hasil, dan mengagregatkan hasil dengan merentasi saluran hasil:

package main

import (
    "fmt"
)

func worker(id int, tasks <-chan string, results chan<- string) {
    for task := range tasks {
        result := fmt.Sprintf("Worker %d processed %s", id, task)
        results <- result
    }
}

func main() {
    tasks := make(chan string)
    results := make(chan string)

    // 创建 3 个工作协程
    for i := 1; i <= 3; i++ {
        go worker(i, tasks, results)
    }

    // 向任务通道发送 10 个任务
    for i := 1; i <= 10; i++ {
        task := fmt.Sprintf("Task %d", i)
        tasks <- task
    }
    close(tasks)

    // 遍历结果通道,输出每个任务的处理结果
    for result := range results {
        fmt.Println(result)
    }
}

Dalam contoh di atas, kami mencipta Dua saluran, tugasan dan keputusan, dibuat pengagihan tugas dan pengagregatan hasil dicapai dengan menghantar tugasan ke saluran tugas dan menerima keputusan melalui saluran keputusan. Pada masa yang sama, 3 coroutine kerja dicipta untuk memproses tugasan dan hasil pemprosesan dihantar ke saluran keputusan. Akhirnya, keputusan diagregatkan dengan merentasi saluran hasil dan hasil pemprosesan setiap tugas adalah output.

Ringkasan:
Saluran di Golang menyediakan cara yang ringkas dan berkesan untuk melaksanakan agihan tugas dan corak pengagregatan hasil. Melalui pengagihan tugas, tugasan dihantar ke coroutine kerja untuk pemprosesan serentak melalui pengagregatan hasil, hasil tugasan yang diselesaikan oleh coroutine kerja diagregatkan. Corak ini menjadikan pengaturcaraan serentak lebih mudah dan lebih cekap.

Menggunakan Saluran di Golang, kami boleh menggunakan sumber sistem dengan lebih baik dan meningkatkan kecekapan pemprosesan tugas. Dalam contoh kod, kami hanya menghantar tugasan ke saluran Dalam aplikasi sebenar, mungkin perlu untuk menimbal saluran, menggunakan saluran penimbal, dsb. untuk mengoptimumkan lagi proses pengagihan tugas dan pengagregatan hasil.

Melalui pengenalan dan contoh kod artikel ini, saya percaya pembaca boleh memahami cara menggunakan Saluran untuk mencapai pengagihan tugas dan pengagregatan hasil, supaya dapat menggunakan teknologi pengaturcaraan serentak dengan lebih baik.

Atas ialah kandungan terperinci Golang menggunakan Saluran untuk melaksanakan pengagihan tugas dan pengagregatan hasil. 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
Menggunakan init untuk permulaan pakej di GoMenggunakan init untuk permulaan pakej di GoApr 24, 2025 pm 06:25 PM

Di GO, fungsi INIT digunakan untuk permulaan pakej. 1) Fungsi init secara automatik dipanggil apabila permulaan pakej, dan sesuai untuk memulakan pembolehubah global, menetapkan sambungan dan memuatkan fail konfigurasi. 2) Terdapat pelbagai fungsi init yang boleh dilaksanakan dalam urutan fail. 3) Apabila menggunakannya, perintah pelaksanaan, kesukaran ujian dan kesan prestasi harus dipertimbangkan. 4) Adalah disyorkan untuk mengurangkan kesan sampingan, menggunakan suntikan ketergantungan dan penangguhan permulaan untuk mengoptimumkan penggunaan fungsi INIT.

Pernyataan Pilih Go: Pelbagai operasi serentakPernyataan Pilih Go: Pelbagai operasi serentakApr 24, 2025 pm 05:21 PM

Go'sSelectStatementStreamLinesConcurrentProgrammingByMultiPlexingOperations.1) itAllowSwaitingonMultiPlechannoPerations,

Teknik Konvensyen Lanjutan di GO: Konteks dan WaitgroupsTeknik Konvensyen Lanjutan di GO: Konteks dan WaitgroupsApr 24, 2025 pm 05:09 PM

ContextandWaitGroupSarecrucialingingoformanagingGoroutinesfectively.1) ContextAllowsSignalingCancellationandDeadlinesacrosapiboundaries, memastikangoroutinescanbestplygracely.2) WaitgroupSsynchronizegoroutine, Mempersembahkan CreationAllcebeBefefeSproprophering, Preveation

Manfaat Menggunakan Seni Bina Microservices GoManfaat Menggunakan Seni Bina Microservices GoApr 24, 2025 pm 04:29 PM

Goisbeneficialformicroservicesduetoitssimplicity, kecekapan, androbustconcurrencysupport.1) go'sdesignemphasizessimplicityandeficiency, idealformicroservices.2) itsconcurrencymodelusinggoroutin

Golang vs Python: Kebaikan dan KekejanganGolang vs Python: Kebaikan dan KekejanganApr 21, 2025 am 12:17 AM

Golangisidealforbuildingscalablesystemsduetoitseficiencyandcurrency, whilepythonexcelsinquickscriptinganddataanalysisduetoitssimplicityandvastecosystem.golang'sdesignencouragescouragescouragescouragescourageSlean, readablecodeanditsouragescouragescourscean,

Golang dan C: Konvensyen vs kelajuan mentahGolang dan C: Konvensyen vs kelajuan mentahApr 21, 2025 am 12:16 AM

Golang lebih baik daripada C dalam kesesuaian, manakala C lebih baik daripada Golang dalam kelajuan mentah. 1) Golang mencapai kesesuaian yang cekap melalui goroutine dan saluran, yang sesuai untuk mengendalikan sejumlah besar tugas serentak. 2) C Melalui pengoptimuman pengkompil dan perpustakaan standard, ia menyediakan prestasi tinggi yang dekat dengan perkakasan, sesuai untuk aplikasi yang memerlukan pengoptimuman yang melampau.

Mengapa menggunakan Golang? Faedah dan kelebihan dijelaskanMengapa menggunakan Golang? Faedah dan kelebihan dijelaskanApr 21, 2025 am 12:15 AM

Sebab -sebab memilih Golang termasuk: 1) prestasi konkurensi tinggi, 2) sistem jenis statik, 3) mekanisme pengumpulan sampah, 4) perpustakaan dan ekosistem standard yang kaya, yang menjadikannya pilihan yang ideal untuk membangunkan perisian yang cekap dan boleh dipercayai.

Golang vs C: Perbandingan Prestasi dan KelajuanGolang vs C: Perbandingan Prestasi dan KelajuanApr 21, 2025 am 12:13 AM

Golang sesuai untuk pembangunan pesat dan senario serentak, dan C sesuai untuk senario di mana prestasi ekstrem dan kawalan peringkat rendah diperlukan. 1) Golang meningkatkan prestasi melalui pengumpulan sampah dan mekanisme konvensional, dan sesuai untuk pembangunan perkhidmatan web yang tinggi. 2) C mencapai prestasi muktamad melalui pengurusan memori manual dan pengoptimuman pengkompil, dan sesuai untuk pembangunan sistem tertanam.

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

EditPlus versi Cina retak

EditPlus versi Cina retak

Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Dreamweaver Mac版

Dreamweaver Mac版

Alat pembangunan web visual

MinGW - GNU Minimalis untuk Windows

MinGW - GNU Minimalis untuk Windows

Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.