我有一个像这样的对象:
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
}
如何编写单元测试来检查Read
和Write
方法是否线程安全?
我认为已经存在针对这种情况的模式,但我没有找到任何相关内容。
我了解了-race
标志:
竞争条件检测器只能在运行代码时实际触发竞争条件时才能检测到它们,这意味着在真实工作负载下运行启用竞争检测的二进制文件非常重要。
我的问题是如何编写单元测试来模拟真实的工作负载。
-race
构建/测试标志的内容。 - Adrian