小编Dmi*_*Sh.的帖子

如何编写单元测试来检查方法是否是线程安全的

我有一个这样的对象:

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)

方法的单元测试应该如何ReadWrite检查它们是否是线程安全的?

我认为这样的情况已经存在模式,但我没有找到任何东西。

我读到关于-race旗帜的内容:

仅当运行代码实际触发竞争条件时,竞争检测器才能检测到竞争条件,这意味着在实际工作负载下运行支持竞争的二进制文件非常重要

我的问题是如何编写模拟实际工作负载的单元测试。

multithreading unit-testing go

3
推荐指数
1
解决办法
2183
查看次数

标签 统计

go ×1

multithreading ×1

unit-testing ×1