Listing 16-1. Jawne tworzenie wątków
Ten przykład stanowi kompletną zawartość pliku Program.cs należącego do solucji ExplicitThreading.sln umieszczonej w katalogu ExplicitThreading.
Listing 16-2. Przechowywanie stanu wątku na stosie
Ten przykład stanowi kompletną zawartość pliku Program.cs należącego do solucji StackState.sln umieszczonej w katalogu StackState.
Listing 16-3. Nieprawidłowe współdzielenie stanu przez wątki
Ten przykład stanowi kompletną zawartość pliku Program.cs należącego do solucji BadStateSharing.sln umieszczonej w katalogu BadStateSharing.
Listing 16-4. Zmienne lokalne, lecz wspólny stan
Ten przykład stanowi kompletną zawartość pliku Program.cs należącego do solucji BadSharedLocalState.sln umieszczonej w katalogu BadSharedLocalState.
Listing 16-5. Zmienna lokalna typu wartościowego jako współużytkowany stan programu
Ten przykład stanowi kompletną zawartość pliku Program.cs należącego do solucji BadSharedLocalValues.sln umieszczonej w katalogu BadSharedLocalValues.
Listing 16-6. Kolejkowanie elementów roboczych wykonywanych przy użyciu puli wątków
Ten przykład rozpoczyna się w wierszu 9. pliku Program.cs należącego do solucji BadThreadPool.sln umieszczonej w katalogu BadThreadPool.
Listing 16-7. Obsługa powinowactwa do wątku przy użyciu klasy SynchronizationContext
Ten przykład rozpoczyna się w wierszu 28. pliku MainWindow.xaml.cs należącego do solucji Affinity.sln umieszczonej w katalogu Affinity.
Listing 16-8. Rozwiązanie wielowątkowe oraz jednowątkowe
Ten przykład rozpoczyna się w wierszu 10. pliku Program.cs należącego do solucji CpuUsageComparison.sln umieszczonej w katalogu CpuUsageComparison.
Listing 16-9. Kod niedostosowany do działania wielowątkowego
Ten przykład rozpoczyna się w wierszu 6. pliku MostRecentlyUsed.cs należącego do solucji MonitorExamples.sln umieszczonej w katalogu Unsynchronized.
Listing 16-10. Testowanie klasy MostRecentlyUsed
Ten przykład rozpoczyna się w wierszu 11. pliku Program.cs należącego do solucji MonitorExamples.sln umieszczonej w katalogu Unsynchronized.
Listing 16-11. Test wykonywany z wykorzystaniem większej liczby wątków
Ten przykład rozpoczyna się w wierszu 31. pliku Program.cs należącego do solucji MonitorExamples.sln umieszczonej w katalogu Unsynchronized.
Listing 16-12. Synchronizacja w kodzie wywołującym
Ten przykład rozpoczyna się w wierszu 13. pliku Program.cs należącego do solucji MonitorExamples.sln umieszczonej w katalogu CallerSynchronizes.
Listing 16-13. Dodanie blokowania do klasy
Ten przykład rozpoczyna się w wierszu 6. pliku MostRecentlyUsed.cs należącego do solucji MonitorExamples.sln umieszczonej w katalogu ClassSynchronizes.
Listing 16-14. Koordynacja wątków przy wykorzystaniu klasy Monitor
Ten przykład rozpoczyna się w wierszu 6. pliku WaitForIt.cs należącego do solucji MonitorCoordination.sln umieszczonej w katalogu MonitorCoordination.
Listing 16-15. Stosowanie klasy WaitForIt
Ten przykład rozpoczyna się w wierszu 7. pliku Program.cs należącego do solucji MonitorCoordination.sln umieszczonej w katalogu MonitorCoordination.
Listing 16-16. Stosowanie APM — modelu programowania asynchronicznego
Ten przykład rozpoczyna się w wierszu 7. pliku Program.cs należącego do solucji AsyncProgrammingModel.sln umieszczonej w katalogu AsyncProgrammingModel.
Listing 16-17. Zadanie wykonujące fragment kodu
Ten przykład stanowi kompletną zawartość pliku Program.cs należącego do solucji TplExamples.sln umieszczonej w katalogu TaskExecuteCode.
Listing 16-18. Przekazywanie większej liczby argumentów dzięki zastosowaniu wyrażenia lambda
Ten przykład rozpoczyna się w wierszu 9. pliku Program.cs należącego do solucji TplExamples.sln umieszczonej w katalogu TaskLambdaArgs.
Listing 16-19. Metoda Task.WaitAll
Ten przykład rozpoczyna się w wierszu 9. pliku Program.cs należącego do solucji TplExamples.sln umieszczonej w katalogu TaskWaitAll.
Listing 16-20. Zadania powiązane relacją rodzic-dziecko
Ten przykład rozpoczyna się w wierszu 9. pliku Program.cs należącego do solucji TplExamples.sln umieszczonej w katalogu TaskParentChild.
Listing 16-21. Kontynuacja w wątku obsługi interfejsu użytkownika
Ten przykład rozpoczyna się w wierszu 18. pliku MainWindow.xaml.cs należącego do solucji SchedulerContext.sln umieszczonej w katalogu SchedulerContext.
Listing 16-22. Tworzenie zadania realizującego metodę APM
Ten przykład rozpoczyna się w wierszu 20. pliku MainWindow.xaml.cs należącego do solucji SchedulerContext.sln umieszczonej w katalogu TaskFromApm.
Listing 16-23. Nieefektywny sposób anulowania operacji
Ten przykład rozpoczyna się w wierszu 19. pliku MainWindow.xaml.cs należącego do solucji SchedulerContext.sln umieszczonej w katalogu BadCancellation.
Listing 16-24. Metoda Parallel.For
Ten przykład rozpoczyna się w wierszu 13. pliku Program.cs należącego do solucji ParallelFor.sln umieszczonej w katalogu ParallelFor.