• 2021-03-06:go中,公共变量是协程安全吗?赋值操作是原子的吗?为什么?


    2021-03-06:go中,公共变量是协程安全吗?赋值操作是原子的吗?为什么?

    福哥答案2021-03-06:

    这是面试中被问到的。实力有限,真正的答案还不知道。我的想法是a=1是原子操作,a=b不是原子操作。实际开发中,不大可能是a=1这种情况,可以说是协程不安全。

    答案1:
    不是协程安全的,
    赋值非原子操作,
    需要加锁要么就做原子操作,
    否则会引起data race。

    评论如下:
    题016_
    卓熊 7:39:15
    Go很多操作并没有做太多处理,还是沿用了c。所以公共变量非协程安全,赋值操作是否原子跟变量类型及机器架构有关(指令集)。

    直接来我家-勤心 10:54:22
    正常上班

    题000_leetcode讨论群
    刷题菜鸡 9:50:47
    Io密集型调大并发数不会提升太高性能

    刷题菜鸡 9:50:56
    因为都在等…

    陌兮 9:55:19
    这时候公用buffer,适量减少线程切换才正确

    成都-似杏而酢 14:49:42
    暴力枚举咯

    成都-似杏而酢 14:49:53
    这才多少点多少边嘛

    葡萄❤柠檬 16:06:34
    适量调大是有用的

    葡萄❤柠檬 16:06:47
    为什么io密集型,线程数是2倍呢?

    你撤回了一条消息

    葡萄❤柠檬 16:07:18
    如果没用,那就应该是cpu核心数

    葡萄❤柠檬 16:07:31
    只是不能调得太大

    成都-似杏而酢 16:21:55
    SSD 的并发不挺好呢么

    1711680493.github.io 16:28:09
    今天的每日一题是我过的最快的一次

    题078_
    Tnze 10:27:04
    公共变量不是协程安全的,赋值操作不是原子的

    Tnze 10:27:45
    这是由于线代多核cpu中变量可能会储存在不同核心各自的cache上

    Tnze 10:29:05
    需要原子操作一定要用sync包

    题029_
    【新手】SQL双活负载均衡集群 7:48:53
    2倍就是一个估计而已,2.5倍,1.8倍,甚至3倍,效果都一样

    【资深】葡萄❤柠檬 8:02:30
    所以有用啊

    【资深】葡萄❤柠檬 8:02:43
    go中默认只是cpu的核心数

    【资深】葡萄❤柠檬 8:02:53
    也就是说,可以调大

  • 相关阅读:
    9. MySQL
    python第四课
    python第三课pycharm的使用
    python第二课
    python第一课
    Python3基础-网络编程(8)
    Python3基础-异常处理(7)
    Python3基础-面向对象(6)
    Python3基础-模块和包(5)
    Python3基础-文件处理(4)
  • 原文地址:https://www.cnblogs.com/waitmoon/p/14492761.html
Copyright © 2020-2023  润新知