Obecnie mam dużą liczbę obliczeń C# (wywołania metod) rezydujących w kolejce, która będzie uruchamiana sekwencyjnie. Każde obliczenie będzie korzystać z usługi o dużym opóźnieniu (sieć, dysk ...).Wzorzec projektowy Alternatywa dla Coroutines
Zamierzałem użyć podprogramów Mono, aby umożliwić następne obliczenia w kolejce obliczeniowej, podczas gdy poprzednie obliczenia czekają na powrót usługi o dużym opóźnieniu. Jednak wolę nie polegać na Mono Coroutines.
Czy istnieje wzór projektu, który można implementować w czystym C#, który umożliwi mi przetwarzanie dodatkowych obliczeń w oczekiwaniu na powrót usług o dużym opóźnieniu?
Dzięki
Aktualizacja:
muszę wykonać ogromną liczbę (> 10000) zadań, a każde zadanie będzie używał jakiś wysoki opóźnieniach usługi. W systemie Windows nie można utworzyć tak wielu wątków.
Aktualizacja:
Zasadniczo muszę wzór, który emuluje zalety (jak poniżej) z tasklets w Stackless Pythonie (http://www.stackless.com/)
- Ogromne # zadań
- Jeśli bloki zadań Kolejne zadanie w kolejce wykonuje
- Bez zmarnowanego cyklu procesora.
- Minimalne przełączanie na wysokości między zadaniami
Czy można tu przedstawić mocniejsze uzasadnienie dla korporacji? Wydaje się, że prosi o (zrównoważone) wątki, jak w odpowiedzi dtb. –
Cóż, potrzebuję wykonać ogromną liczbę (> 10000) zadań, a każde zadanie będzie korzystało z usługi o dużym opóźnieniu. W systemie Windows nie można utworzyć tak wielu wątków. – jameszhao00
Brzmi jak zadanie dla ThreadPool, +1 dla jscharf –