说我有一个SemaphoreSlim来限制对这样的外部API的并发调用:
private static readonly SemaphoreSlim semaphoreSlim = new SemaphoreSlim(10);
public async Task<HttpResponseMessage> SendApiRequest(HttpRequestMessage request)
{
using (await semaphoreSlim.WaitAsync())
return await SendRequestToAPI(request);
}
如果对API的调用次数使得没有长时间等待的调用者,但始终有至少两个调用者等待,那么是否保证所有调用者最终都能通过?还是一个请求是“不幸的”,而在另一个调用者释放该信号量时再也不会被选择输入?
答案 0 :(得分:2)