Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Mengekalkan Bilangan Malar Goroutine Serentak dalam Go?

Bagaimana untuk Mengekalkan Bilangan Malar Goroutine Serentak dalam Go?

Patricia Arquette
Patricia Arquetteasal
2024-12-02 01:22:15579semak imbas

How to Maintain a Constant Number of Concurrent Goroutines in Go?

Cara Memastikan Bilangan Goroutine Malar

Pengaturcaraan serentak dalam Go melibatkan penciptaan berbilang goroutin (benang ringan) untuk melaksanakan tugas secara serentak. Walaupun adalah perkara biasa untuk menguruskan penyiapan goroutin, cabaran berbeza timbul apabila anda perlu menjamin bilangan goroutin tertentu berjalan serentak.

Pertimbangkan senario di mana anda mempunyai sejumlah besar tugas untuk diproses dan ingin mengehadkan bilangan goroutine aktif pada bila-bila masa. Sebagai contoh, anda boleh mempunyai proses yang mengendalikan permintaan masuk dan ingin mengehadkan bilangan permintaan serentak untuk mengekalkan kestabilan sistem.

Untuk mencapai ini, kami boleh menggunakan teknik "keselarian sempadan," seperti yang diterangkan dalam artikel Go Concurrency Patterns. Idea utama ialah menggunakan saluran struct kosong sebagai pengawal pengehad untuk mengawal bilangan goroutin pekerja.

Dalam coretan kod yang disediakan, saluran pengawal dimulakan dengan kapasiti yang sama dengan bilangan maksimum goroutin kita mahu berjalan serentak (dalam kes ini, 10). Untuk memastikan had ini, sebarang ciptaan goroutine baharu mula-mula cuba menerima struct kosong daripada saluran pengawal. Jika saluran penuh (menunjukkan bahawa had goroutine telah dicapai), penciptaan disekat sehingga slot tersedia.

Apabila setiap goroutine menyelesaikan kerjanya, ia mengembalikan struct kosong ke saluran pengawal, menjadikannya tersedia untuk goroutine lain untuk dimulakan. Melalui mekanisme ini, kami memastikan bilangan goroutin aktif kekal dalam had yang ditentukan.

Dalam contoh:

  • Pembolehubah maxGoroutines mentakrifkan bilangan maksimum goroutin serentak.
  • Saluran pengawal dimulakan dengan kapasiti 10, yang mengehadkan bilangan maksimum goroutine yang boleh dibuat.
  • Fungsi pekerja mewakili tugas individu yang setiap goroutine laksanakan.
  • Fungsi utama mencipta 30 goroutine, tetapi hanya 10 daripadanya boleh laksanakan serentak disebabkan had saluran pengawal.

Atas ialah kandungan terperinci Bagaimana untuk Mengekalkan Bilangan Malar Goroutine Serentak dalam Go?. 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