channel是否线程安全等

题目来源:有色

答案1:

  • channel为什么设计成线程安全?
    不同协程通过channel进行通信,本身的使用场景就是多线程,为了保证数据的一致性,必须实现线程安全。
  • channel如何实现线程安全的?
    channel的底层实现中, hchan结构体中采用Mutex锁来保证数据读写安全。在对循环数组buf中的数据进行入队和出队操作时,必须先获取互斥锁,才能操作channel数据。