Go语言Slice是否线程安全

题目来源:字节

答案:

Go语言实现线程安全常用的几种方式:

  • 1.互斥锁;
  • 2.读写锁;
  • 3.原子操作;
  • 4.sync.once;
  • 5.sync.atomic;
  • 6.channel

slice底层结构并没有使用加锁等方式,不支持并发读写,所以并不是线程安全的,使用多个goroutine对类型为slice的变量进行操作,每次输出的值大概率都不会一样,与预期值不一致; slice在并发执行中不会报错,但是数据会丢失。