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

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

回答·8
最热
最新
  • go 并发安全性分析,建议去学习 GMP 原理,学完就什么都明白了
  • 不是协程安全的, 赋值非原子操作, 需要加锁要么就做原子操作, 否则会引起 data race
  • 当然不是了。详细的自行 Google.
  • 不是协程安全的,要加锁
  • 1.非线程安全 1.是不是原子操作得看变量类型大小
  • 公共区域的只有不变量才是线程安全的,也就是常量,所有的常量不怕多线程同时操作,如果是变量必须赋予锁才能保证线程安全。
  • 不是携程安全,也不是原子操作
  • 公共变量不是协程安全的,得加互斥锁 赋值操作都是原子的,但是多协程同时对一个变量赋值时,就会出现竞争关系。为了避免数据竞争和确保协程安全,go 提供互斥锁和读写互斥锁