Содержание
- 2. Что такое поток? Поток – это сущность операционной системы, набор инструкций и данных, выполняемый на процессоре.
- 3. Приоритеты потоков
- 4. Когда использовать потоки Длительные вычисления в фоновом режиме Изоляция одного кода от другого Распараллеливание интенсивных вычислений
- 5. Недостатки использования потоков Значительное увеличение сложности программы Повышенный расход ресурсов процессора на создание и переключение между
- 6. Потоки в C# namespace System.Threading { // Summary: // Creates and controls a thread, sets its
- 7. Пример создания потока class ThreadTest { static void Main() { Thread t = new Thread(WriteY); t.Start();
- 8. Основные и фоновые потоки Процесс не будет завёршен, пока хотя бы один его основной поток ещё
- 9. Разделение данных между потоками class ThreadTest { bool done; static void Main() { ThreadTest tt =
- 10. Завершение работы потока Поток завершает свою работу при выходе из основного метода. Можно попытаться принудительно завершить
- 11. Обработка исключений в потоках try { new Thread(Go).Start(); } catch (Exception ex) { // Сюда мы
- 12. Thread.Abort и Thread.Interrupt Thread.Abort генерирует в потоке исключение ThreadAbortException. Даже если это исключение будет перехвачено, оно
- 13. Потоковая безопасность Потокобезопасный код – это код, не имеющий никаких неопределенностей при любых сценариях многопоточного исполнения.
- 14. Недостатки потокобезопасного кода Трудоёмкость написания Производительность (даже если многопоточность реально не используется) Потокобезопасный тип не обязательно
- 15. Блокировка потока Блокированный поток немедленно перестает получать время CPU, устанавливает свойство ThreadState в WaitSleepJoin и остается
- 16. Основные средства синхронизации потоков
- 17. Состояния потока
- 18. Конструкция lock (Monitor.Enter – Monitor.Exit) class ThreadSafe { static object locker = new object(); static int
- 19. Блоки синхронизации
- 20. Использование Mutex // Используем уникальное имя приложения, // например, с добавлением имени компании static Mutex mutex
- 21. Иерархия WaitHandle System.Threading.WaitHandle System.Threading.EventWaitHandle System.Threading.AutoResetEvent System.Threading.ManualResetEvent System.Threading.Mutex System.Threading.Semaphore
- 22. Использование EventWaitHandle class BasicWaitHandle { static EventWaitHandle wh = new EventWaitHandle(false, EventResetMode.AutoReset); static void Main() {
- 23. AutoResetEvent и ManualResetEvent new AutoResetEvent(false) == new EventWaitHandle(false, EventResetMode.AutoReset) new ManualResetEvent(false) == new EventWaitHandle(false, EventResetMode.ManualReset)
- 24. Создание межпроцессных EventWaitHandle EventWaitHandle wh = new EventWaitHandle(false, EventResetMode.AutoReset, "MyCompany.MyApp.SomeName"); Конструктор EventWaitHandle также позволяет создавать именованные
- 25. Semaphore class SemaphoreTest { static Semaphore s = new Semaphore(3, 3); // Available=3; Capacity=3 static void
- 26. Вопросы?
- 27. Список литературы Джеффри Рихтер. CLR via C# (3е издание) Эндрю Троелсен. Язык программирования C# и платформа
- 28. Задание для работы в аудитории Написать программу, которая в реальном времени будет рисовать на форме узор
- 30. Скачать презентацию