我有一个案例,我必须原子地实现一个加法,只是为了保存一个声明 - 我做了以下
int result = Interlocked.Add(ref int source, await ComputeAsync(object someObj);
public async Task<int> ComputeAsync(object someObj)
{
// some operations
....
}
上面的Interlocked.Add语句是否有错误。我们可以传递一个await函数,它将一个int作为param返回给add stmt吗?有什么影响?
答案 0 :(得分:0)
只要您了解ComputeAsync
将在Add
被调用之前完全完成,那么该代码就可以正常运行。也就是说,执行顺序如下:
int value = await ComputeAsync(someObj);
int result = Interlocked.Add(ref int source, value);