您好,欢迎来到12图资源库!分享精神,快乐你我!我们只是素材的搬运工!!
  • 首 页
  • 当前位置:首页 > 开发 > WEB开发 >
    Go 内存模型 并发可见性(3)
    时间:2021-08-06 12:09 来源:网络整理 作者:网络 浏览:收藏 挑错 推荐 打印

    和以前一样,不能保证在 main 中,察看对 done 的写入意味着察看对 a 的写入,因此该顺序也可以打印一个空字符串。 更蹩脚的状况下,由于两个线程之间没有同步事情,因此无法保证 main 会察看到对 done 的写入。 main 中的循环会不断死循环。

    下面是该例子的一个更巧妙的变体

    type T struct { 

        msg string 

     

    var g *T 

     

    func setup() { 

        t := new(T) 

        t.msg = "hello, world" 

        g = t 

     

    func main() { 

        go setup() 

        for g == nil { 

        } 

        print(g.msg) 

    虽然 main 观测到g不为nil,但是也没有任何机制保证可以读取到t.msg。

    在上述例子中,处置方案都是相反的:请运用显式的同步机制。

    【编辑引荐】

    Vue 2 系统如何快速迁移 Vite 作为开发工具

    开发中的坑2:MQ 也能做 RPC 调用?

    混合云和多云架构的五个支持技术

    真实环境下大内存 Go 效劳功用优化一例

    AI续写小说悄然盛行:人类特有的创作力,曾经被AI复制?_IT技术周刊第681期

    (责任编辑:admin)