Potrzebuję środowiska, które musi utrzymywać różne kolejki zadań, i dla każdego z nich mieć dobrze określoną liczbę współbieżnych wątków, które mogą być wykonywane dla każdej kolejki. Coś takiego:C# zadanie zadłużanie wielu kolejek
- Kolejka 1 -> 3 wątki;
- Kolejka 2 -> 6 wątków;
Rodzaj systemu zadań. Udało mi się samemu to zaimplementować używając zwykłego starego kodu C# (alias System.Threading.Thread, lock and queue), który działa więcej niż dobrze przez 1 rok. Jednak wciąż czytam artykuły o cudach TaskFactory i TaskScheduler, o możliwościach tego z wbudowanymi klasami w .NET, ale nie udało mi się znaleźć przykładu, aby to udowodnić. Chciałbym przetestować to i porównać z tym, co mam teraz, aby sprawdzić, czy działa lepiej, a jeśli tak, to je zastąpić.
Więcej, mogę żyć bez konieczności ograniczania/ustawiania liczby równoległych wątków dla każdej kolejki, o ile mogę uzyskać guarantee
, że jeśli element kierowany do kolejki nr 2 jest wykonywany bez problemu, nawet jeśli kolejka nr 1 jest wykonywana przy pełnym obciążeniu.
Moje pytanie brzmi - czy jest coś w .net 4 i więcej, czy ktoś może wskazać mi przykład? Szukam jednego przez cały tydzień i nie udało mi się uzyskać czegoś istotnego.
Aby osiągnąć to, co OP wydaje się chcieć, nie wystarczy, że zadania są wydawane w kolejce priorytetowej.Wątki wykonujące zadania w kolejce nr 2 muszą działać z wyższym priorytetem niż te obsługujące kolejkę nr 1. Nie jest jasne, czy takie rozwiązania pozwalają na to? –
Tak, prawdopodobnie to jest to, co pasuje do tego, czego potrzebuję. Implementuje różne kolejki i ogranicza maksymalną liczbę elementów, które mogą być wykonywane w tym samym czasie i nie zatrzymuje drugiej kolejki, aby uruchamiać inne elementy równolegle z pierwszą kolejką. Dzięki! – dcg