我有一个这样的对象:
type Store struct {
mutex sync.RWMutex
data map[string]int
}
func (s * Store) Read(key string) int, error {
// ...
defer s.mutex.RUnlock()
s.mutex.RLock()
// ...
return val, nil
}
func (s * Store) Write(key string, value int) error {
// ...
defer s.mutex.Unlock()
s.mutex.Lock()
// ...
return nil
}
Run Code Online (Sandbox Code Playgroud)
方法的单元测试应该如何Read并Write检查它们是否是线程安全的?
我认为这样的情况已经存在模式,但我没有找到任何东西。
我读到关于-race旗帜的内容:
仅当运行代码实际触发竞争条件时,竞争检测器才能检测到竞争条件,这意味着在实际工作负载下运行支持竞争的二进制文件非常重要
我的问题是如何编写模拟实际工作负载的单元测试。