当我使用:
`public call(Func<IDatabase, Task<T>> func){
var task=func(redisInstance);
task.wait();
return task.Result;
}`联系方式:call(client => redisInstance.SetMembersAsync(setName))
它工作得很好,但是当有很多请求时,'CPU‘的使用率就会增加;
但在第二种情况下:
`public async call2(Func<IDatabase, Task<T>> func){
var task=func(redisInstance);
return await task.Result;
}`联系方式:call2(async client => await redisInstance.SetMembersAsync(setName))
CPU正常,但响应时间较长;
对这个案子有什么想法吗?第二种方法有什么问题?
发布于 2017-04-16 07:22:12
我认为你可以做两件事来提高负载下的挂钟时间速度。
awaits,这是因为你对结果进行了双重包装,所以它现在是Task<Task<T>>。将您的呼叫更改为:等待(client redisInstance.SetMembersAsync(setName))
.ConfigureAwait(false)删除等待后继续的隐式同步来进行优化,因此请将等待更改为:返回等待task.ConfigureAwait(false);
https://stackoverflow.com/questions/42417474
复制相似问题