← 返回首页

Go 除了 mutex 以外还有那些方式安全读写共享变量?

除了Mutex,主要还有信号量、通道(Channel),原子操作(atomic)这几种方式。

信号量的实现其实跟mutex差不多,实现起来也很方便,主要通过信号量计数来保证。

chanenl是Go最推崇的方式,它通过通信来传递数据所有权,从根源上避免竞争,更适合复杂的业务逻辑;

而原子操作则针对最简单的整型或指针等进行无锁操作,性能最高,常用于实现计数器或状态位。

选择哪种,完全取决于数据结构的复杂度和业务的读写模型。