3

我正在尝试了解 C# 5 的新异步功能是如何工作的。假设我想开发一个原子增量函数来增加一个虚构的 IntStore 中的整数。仅在一个线程中对该函数进行多次调用。

async void IncrementKey(string key) {
    int i = await IntStore.Get(key);
    IntStore.Set(key, i+1);
}

在我看来,这个功能是有缺陷的。对 IncrementKey 的两次调用可以从 IntStore 返回相同的数字(例如 5),然后将其设置为 6,从而丢失其中一个增量?

如果 IntStore.Get 是异步的(返回任务)以便正常工作,如何重写?

性能至关重要,是否有避免锁定的解决方案?

4

1 回答 1

4
于 2011-02-27T07:36:07.953 回答