0

当我使用:

`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 没问题,但响应需要很长时间;

关于这个案例的任何想法?第二种方法有什么问题?

4

1 回答 1

0

我认为您可以做两件事来提高负载下的挂钟时间速度。

  1. 有 2 awaits,这是因为你已经对结果进行了双重包装,所以现在是Task<Task<T>>. 将您的呼叫更改为:

    call2(client => redisInstance.SetMembersAsync(setName))
    
  2. 您可以通过使用在等待后删除延续的隐式同步来进行优化.ConfigureAwait(false),因此将您的等待更改为:

    return await task.ConfigureAwait(false);
    
于 2017-04-15T23:22:11.593 回答