Rumah > pembangunan bahagian belakang > Golang > Bagaimana Saya Boleh Mencegah Ranap Tulis Peta Serentak dalam Go?

Bagaimana Saya Boleh Mencegah Ranap Tulis Peta Serentak dalam Go?

Patricia Arquette
Lepaskan: 2024-12-14 01:58:09
asal
188 orang telah melayarinya

How Can I Prevent Concurrent Map Write Crashes in Go?

Mencegah Ranap Tulis Peta Serentak

Apabila cuba menulis serentak pada peta yang sama daripada berbilang goroutine, Go 1.6 mencetuskan ranap yang disengajakan untuk mengelakkan rasuah data. Tidak seperti panik yang boleh dipulihkan daripada menggunakan tangguh dan pulih, ranap sistem ini adalah disengajakan dan tidak boleh dipintas.

Untuk menyelesaikan isu ini, elakkan penulisan serentak pada peta. Dalam contoh yang disediakan:

package main

import "time"

var m = make(map[string]string)

func main() {
    go func() { // Rewrite m["x"] = "foo" in a loop
        for {
            m["x"] = "foo"
        }
    }()
    go func() { // Rewrite m["x"] = "foo" in a loop
        for {
            m["x"] = "bar"
        }
    }()

    time.Sleep(1 * time.Second) // Keep the program running
}
Salin selepas log masuk

Tulisan serentak pada peta daripada berbilang goroutin melanggar peraturan konkurensi Go untuk peta, menyebabkan ranap yang disengajakan.

Untuk mengelakkan ranap ini dan menguatkuasakan integriti data, pertimbangkan untuk menggunakan mutex atau penyegerakan primitif untuk mengawal akses kepada peta. Ini memastikan bahawa hanya satu goroutine boleh mengubah suai peta pada satu masa.

Atas ialah kandungan terperinci Bagaimana Saya Boleh Mencegah Ranap Tulis Peta Serentak dalam Go?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan