Jak można użyć czegoś takiego jak ThreadStatic
w zadaniu TPL? Moje zrozumienie ("Wrox Professional Parallel Programming with C#", str. 74) jest takie, że Zadanie może przełączać się z jednego wątku na inny podczas wykonywania.ThreadStatic dla zadania TPL
Co chcę zrobić?
Chcę zachować identyfikator sesji wewnątrz klasy statycznej, więc nie muszę przekazywać tego identyfikatora do wszystkich moich metod. Moja biblioteka ma metody takie jak login(id)
, logout(id)
i wiele metod, które działają na poświadczeniach powiązanych z tym id. Ale nie chcę przekazywać tego identyfikatora do każdej metody. Mogę się upewnić, że moja biblioteka jest wywoływana w innym wątku dla różnych sesji. Zapisanie identyfikatora wewnątrz login()
w zmiennej zadziała.
Teraz chcę używać zadań TPL, które są tworzone dla mnie przez ThreadPool
. Mogę przekazać identyfikator sesji do zadania, ale jeśli przechowuję ten identyfikator wewnątrz zmiennej ThreadStatic
, nie przetrwa, jeśli moje zadanie zmieni wątki.
Nie słyszałem o rzeczywistej zadania * przełączanie z jednego wątku do drugiego w trakcie realizacji. Gdzie słyszałeś o tym jako o możliwości? –
Na stronie 74 książki "Wrox Professional Parallel Programming with C#" pokazano rysunek pokazujący przełączanie zadań między wątkami roboczymi. – Gerard
@Gradard: Czy jesteś pewien, że to * podczas wykonywania * zamiast zadania idącego w * kolejce * dla jednego wątku, a następnie kradzieży oznacza przejście do innego wątku do wykonania? –