1. 程式人生 > >資源競爭

資源競爭

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
}

資源競爭