В курса ще се разгледа многозадачността в съвременните опе¬рационни системи и средствата за паралелно изпълнение на програ¬мен код, които предоставя .NET Framework. Ще се представят ниш¬ките, техните състояния и управлението на техния жизнен цикъл – стартиране, приспиване, събуждане, прекратяване и др. Студентите ще се запознаят със средствата за синхронизация на нишки при достъп до общи данни, както и начините за изчакване на зает ресурс и известяване при освобождаване на ресурс. Ще бъдат разгледани синхронизационните обекти в .NET Framework, както и неуправляваните синхронизационни обекти на операционната система. В курса ще се изясни концепцията за работа с вградения в .NET Framework пул от нишки, начините за асинхронно изпълнение на задачи, сред¬ствата за контрол над тяхното поведение и препоръчваните практики за работа с тях. За изучаване на този курс, студентите е необходимо да имат базови познания за езика C# и .NET Framework.
|
- Многозадачност. Видове многозадачност. Имплементации на многозадачност. Домейни на приложението.
- Нишки. Клас Thread.
- Приоритет на нишките.
- Жизнен цикъл на нишките. Състояния на нишките.
- Контейнер за локални данни на нишките.
- Статични полета, свързани с нишките.
- Проблеми при работа с общи данни. Повреждане на данни. "Мъртвата хватка".
- Синхронизация. Стратегии за синхронизация.
- Синхронизиране на критични секции от код.
- Синхронизиране на ниво клас. Синхронизирани контексти.
- Неуправлявана синхронизация.
- Класически синхронизационни проблеми. Задачата "Производител - потребител". Задачата "Четци и писачи". Задачата "Обядващи философи".
- Пул от нишки. Клас ThreadPool.
- Таймери.
- Асинхронни извиквания. Асинхронни извиквания на методи и приложения.
- Асинхронно извикване чрез делегат.
- Модел за асинхронни извиквания. Приключване на асинхронен метод.
Литература:
- Михаил Стойнов, Многонишково програмиране и синхронизация, http://www.nakov.com/dotnet/lectures/Lecture-16-Concurrency-v1.0.ppt.
- Светлин Наков и колектив, Програмиране на .NET FRAMEWORK (том 2), Българска асоциация на разработчиците на софтуер (БАРС), 2006, ISBN 978-954-775-672-4.
- Juval Lowy, "Programming .NET Components", O’Reilly, 2003, ISBN 0596003471.
- Tom Archer, Andrew Whitechapel, "Inside C# 2nd Edition", Microsoft Press, 2002, ISBN 0735616485.
- MSDN Library – http://msdn.microsoft.com.
|