小编Tac*_*ang的帖子

为什么Go不显示内存重新排序?

我正在阅读preshing的博客Memory Reordering Caught in the Act,并通过他的示例代码重现内存重新排序

然后我想知道我是否可以通过Go重现内存重新排序,所以我在go中编写了示例代码,但是在Go中没有显示内存重新排序.

我写信是为了分享一些调查结果.

你能帮忙解释为什么Go无法进行内存重新排序吗?谢谢.

Go中的示例代码:

 package main

    import (
            "fmt"
            "math/rand"
    )

    var x, y, r1, r2 int
    var detected = 0

    func randWait() {
            for rand.Intn(8) != 0 {
            }
    }

    func main() {
            beginSig1 := make(chan bool, 1)
            beginSig2 := make(chan bool, 1)
            endSig1 := make(chan bool, 1)
            endSig2 := make(chan bool, 1)
            go func() {
                    for {
                            <-beginSig1
                            randWait()
                            x = 1
                            r1 = y
                            endSig1 <- true …
Run Code Online (Sandbox Code Playgroud)

c++ memory concurrency go

10
推荐指数
1
解决办法
236
查看次数

标签 统计

c++ ×1

concurrency ×1

go ×1

memory ×1