我正試圖討論C#5的新異步功能是如何工作的。假設我想開發一個原子增量函數來增加一個虛構的IntStore中的整數。僅在一個線程中對此函數進行多次調用。C#5.0異步如何工作?
async void IncrementKey(string key) {
int i = await IntStore.Get(key);
IntStore.Set(key, i+1);
}
在我看來,這個功能是有缺陷的。兩次調用IncrementKey可能會從IntStore返回相同的數字(如5),然後將其設置爲6,從而失去其中一個增量?
如果IntStore.Get是異步的(返回任務)以便正確工作,如何重寫?
性能至關重要,是否有避免鎖定的解決方案?