sql >> Databáze >  >> NoSQL >> Redis

Výjimka časového limitu po asynchronních příkazech a Task.WhenAny čeká v StackExchange.Redis

Na základě dlouhé diskuze v chatu a spousty kopání to vypadá, že v některých nejasných scénářích TPL unese vyhrazené čtenářské vlákno, když děláme věci jako .TrySetResult (což:děláme často). To způsobí okamžité zablokování, pokud provedete synchronní volání, protože nemůže zpracovat žádná data soketu, pokud je zaneprázdněn čekáním na dokončení úlohy (která by byla dokončena pouze sama). Ve skutečnosti máme kód, konkrétně abychom tomu zabránili , ale vypadá to, že toto řešení ve skutečnosti vynucuje k tomu dojde v některých jiných scénářích. Což... je hrozné. Uvidím, co najdu. Ale v zásadě je problém v tom, že aktuálně , v některých omezených scénářích , TaskCompletionSource.TrySetResult dává sílu TPL provozovat synchronní pokračování. To zahrnuje Task.WhenAny .




  1. ServiceStack Redis, jak vrátit tabulku Lua jako seznam

  2. Mohu použít '$set' na vložený dokument, když použiji proměnnou jako název souboru v MongoDB?

  3. Redis připojení/limit velikosti vyrovnávací paměti překročen

  4. Docker [Errno 111] Připojit volání se nezdařilo ('127.0.0.1', 6379)