資源競爭
阿新 • • 發佈:2018-03-24
file 共享 OS UNC 同時 無法 特點 cnblogs unlock
#出現原因
競爭條件
如果一個程序在執行時依賴於特點的順序和時序;但是有無法保證這種順序或時序,此時就會存在競爭條件
競爭條件經常出現在那些需要性共享資源的並發程序中;當兩個或多個進程(線程)同時去修改一項共享資源,
最先訪問資源的進程(線程)將得到預期的結果,其他進程(線程)則不然;最終,因為程序無法判斷哪個進程(線程)
最先訪問了資源,所有將無法產生一致的行為
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 }
資源競爭