To jest coś z rodzeństwa pytanie do this programmers question.Czy są jakieś nieoczywiste niebezpieczeństwa w używaniu wątków w ASP.NET?
Krótko mówiąc, zamierzamy popchnąć trochę pracy, która była "prosięta" na żądania użytkowników w tle "prawidłowo". Połączone pytanie dało mi mnóstwo pomysłów, jeśli pójdziemy drogą serwisową, ale tak naprawdę nie dostarczyliśmy żadnych przekonujących argumentów na temat tego, dlaczego właśnie powinniśmy.
Muszę przyznać, że dla mnie, umiejętność zrobić moralnym odpowiednikiem
WorkQueue.Push(delegate(object context) { ... });
jest bardzo atrakcyjne, więc jeśli jej tylko trochę trudne (raczej niż nieodłącznie niewykonalne) jestem skłonny iść z podejściem wątku tła.
Tak, problemy z tła wątków Jestem świadomy (w kontekście AppPool):
- mogą umrzeć w każdej chwili ze względu na AppPool zawraca
- Rozwiązanie: śledzić, gdy zadanie jest wykonywane, więc można go ponownie uruchomić * nowy wątek powinien być potrzebne
- The ThreadPool służy do odpowiedzi na przychodzących zapytań HTTP, więc użycie może głodować IIS
- Rozwiązanie: zbuduj własną pulę wątków, ograniczając również liczbę wątków.
Moje pytanie brzmi, co mi brakuje, czy coś? Co jeszcze może pójść nie tak z wątkami tła w ASP.NET?
* Zadania, o których mowa, są już bezpieczne do ponownego uruchomienia, więc nie stanowi to problemu.
ǂ Załóżmy, że nie robimy niczego naprawdę głupiego, na przykład rzucania wyjątków w wątkach tła.
Czy większość wątków "niebezpieczeństw" nie jest oczywistych? –
@Mitch - Szukam tych osobliwych dla ASP.NET. Te niebezpieczeństwa dla pieszych można na razie zignorować, :) –