#出现原因
竞争条件
如果一个程序在执行时依赖于特点的顺序和时序;但是有无法保证这种顺序或时序,此时就会存在竞争条件
竞争条件经常出现在那些需要性共享资源的并发程序中;当两个或多个进程(线程)同时去修改一项共享资源,
最先访问资源的进程(线程)将得到预期的结果,其他进程(线程)则不然;最终,因为程序无法判断哪个进程(线程)
最先访问了资源,所有将无法产生一致的行为
type DB struct {
mutex *sync.Mutex
store map[string][3]float64
}
func (db *DB) nearest(target [3]float64) string {
var filename string
db.mutex.Lock()
smalllest := 100000.0
for k, v := range db.store {
dist := distance(target, v)
if dist < smalllest {
filename, smalllest = k, dist
}
}
delete(db.store, filename)
db.mutex.Unlock()
return filename
}