👩💻 Join our community of thousands of amazing developers!
本文介绍使用unsafe.Pointer 来提升动态加载数据的效率问题。 场景 在很多后台服务中,需要动态加载配置文件或者字典数据。因此在访问这些配置或者字典时,需要给这些数据添加锁,保证并发读写的安全性。正常情况下,需要使用读写锁。下面来看看读写锁的例子。 读写锁加载数据 使用读写锁,可以保证访问data 不会出现竞态。 type Config struct { sync.RWMutex data map[string]interface{} } func (c *Config) Load() { c.Lock() defer c.Unlock() c.data = c.load() } func (c *Config) load() map[string]interface{} { // 数据的加载 return make(map[string]interface{}) } func (c *Config) Get() map[string]interface{} { c.RLock() defer c.RUnlock() return c.data ...