Rumah >pembangunan bahagian belakang >Golang >Mengapa My Go Goroutines Tidak Berjalan Selari?

Mengapa My Go Goroutines Tidak Berjalan Selari?

Susan Sarandon
Susan Sarandonasal
2024-12-15 01:52:09967semak imbas

Why Aren't My Go Goroutines Running in Parallel?

Mengapa Go Runtime Tidak Melaksanakan Pernyataan Serentak Secara Selari?

Soalan:

Saya menjalankan program Go yang tidak menggunakan berbilang teras CPU walaupun mempunyai akses kepadanya. Saya menggunakan goroutine untuk melaksanakan tugas serentak, tetapi mereka melaksanakan secara berurutan. Apakah yang boleh menyebabkan tingkah laku ini?

Jawapan:

Terdapat dua kemungkinan penjelasan untuk isu ini:

  • Persekitaran GOMAXPROCS pembolehubah: Pembolehubah GOMAXPROCS mengawal bilangan CPU yang dibenarkan untuk digunakan oleh masa jalan Go. Secara lalai, pembolehubah ini ditetapkan kepada 1, yang bermaksud bahawa masa jalan akan menggunakan hanya satu CPU. Untuk mendayakan pemprosesan selari, anda perlu menetapkan GOMAXPROCS kepada nilai yang lebih besar daripada 1. Anda boleh melakukan ini sama ada dengan menetapkan pembolehubah persekitaran atau menggunakan fungsi runtime.GOMAXPROCS dalam kod anda.
  • Komunikasi saluran: Jika gorouti anda menghabiskan banyak masa untuk berkomunikasi antara satu sama lain melalui saluran, menggunakan berbilang teras CPU sebenarnya boleh menghalang prestasi. Ini kerana komunikasi saluran melibatkan penukaran konteks, yang boleh menambah overhed. Dalam kes sedemikian, adalah lebih cekap untuk menggunakan satu teras CPU untuk semua goroutine.

Atas ialah kandungan terperinci Mengapa My Go Goroutines Tidak Berjalan Selari?. 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