Содержание
- 2. ОСНОВНЫЕ ВОПРОСЫ Введение в многопоточность; Cоздание потоков; Потоки с параметрами; Синхронизация потоков; Мониторы; Класс AUTORESETEVENT; Мьютексы;
- 3. ВВЕДЕНИЕ В МНОГОПОТОЧНОСТЬ. КЛАСС THREAD Одним из ключевых аспектов в современном программировании является многопоточность. Ключевым понятием
- 4. ВВЕДЕНИЕ В МНОГОПОТОЧНОСТЬ. КЛАСС THREAD Образно многопоточность на базе потоков можно изобразить следующим образом:
- 5. ВВЕДЕНИЕ В МНОГОПОТОЧНОСТЬ. КЛАСС THREAD Разумеется, необходимо знать особенности одновременного выполнения множества потоков. Из-за того, что
- 6. ВВЕДЕНИЕ В МНОГОПОТОЧНОСТЬ. КЛАСС THREAD В приложении, которое функционирует на сервере, один поток всегда ожидает поступления
- 7. ВВЕДЕНИЕ В МНОГОПОТОЧНОСТЬ. КЛАСС THREAD Различают две разновидности многозадачности: на основе процессов и на основе потоков.
- 8. ВВЕДЕНИЕ В МНОГОПОТОЧНОСТЬ. КЛАСС THREAD Поток представляет собой координируемую единицу исполняемого кода. Своим происхождением этот термин
- 9. ВВЕДЕНИЕ В МНОГОПОТОЧНОСТЬ. КЛАСС THREAD Главное преимущество многопоточной обработки заключается в том, что она позволяет писать
- 10. ВВЕДЕНИЕ В МНОГОПОТОЧНОСТЬ. КЛАСС THREAD Поток может находиться в одном из нескольких состояний. В целом, поток
- 11. ВВЕДЕНИЕ В МНОГОПОТОЧНОСТЬ. КЛАСС THREAD В связи с организацией многозадачности на основе потоков возникает потребность в
- 12. ВВЕДЕНИЕ В МНОГОПОТОЧНОСТЬ. КЛАСС THREAD Основной функционал для использования потоков в приложении сосредоточен в пространстве имен
- 13. ВВЕДЕНИЕ В МНОГОПОТОЧНОСТЬ. КЛАСС THREAD Основные свойства класса Thread: Статическое свойство CurrentContext позволяет получить контекст, в
- 14. ВВЕДЕНИЕ В МНОГОПОТОЧНОСТЬ. КЛАСС THREAD Некоторые методы класса Thread: Статический метод GetDomain возвращает ссылку на домен
- 15. ВВЕДЕНИЕ В МНОГОПОТОЧНОСТЬ. КЛАСС THREAD Получение информации о потоке Используем вышеописанные свойства и методы для получения
- 16. ВВЕДЕНИЕ В МНОГОПОТОЧНОСТЬ. КЛАСС THREAD Статус потока Статусы потока содержатся в перечислении ThreadState: Aborted: поток остановлен,
- 17. ВВЕДЕНИЕ В МНОГОПОТОЧНОСТЬ. КЛАСС THREAD В процессе работы потока его статус многократно может измениться под действием
- 18. ВВЕДЕНИЕ В МНОГОПОТОЧНОСТЬ. КЛАСС THREAD Приоритеты потоков Приоритеты потоков располагаются в перечислении ThreadPriority: Lowest BelowNormal Normal
- 19. СОЗДАНИЕ ПОТОКОВ. ДЕЛЕГАТ THREADSTART Используя класс Thread, мы можем выделить в приложении несколько потоков, которые будут
- 20. Здесь новый поток будет производить действия, определенные в методе Count. Чтобы запустить этот метод в качестве
- 21. Таким образом, в нашей программе будут работать одновременно главный поток, представленный методом Main, и второй поток.
- 22. СОЗДАНИЕ ПОТОКОВ. ДЕЛЕГАТ THREADSTART Существует еще одна форма создания потока: Thread myThread = new Thread(Count); Хотя
- 23. ПОТОКИ С ПАРАМЕТРАМИ И PARAMETERIZEDTHREADSTART В предыдущем примере мы рассмотрели, как запускать в отдельных потоках методы
- 24. После создания потока мы передаем метод myThread.Start(number); переменную, значение которой хотим передать в поток. При использовании
- 25. ПОТОКИ С ПАРАМЕТРАМИ И PARAMETERIZEDTHREADSTART Но что делать, если нам надо передать не один, а несколько
- 26. Сначала определяем специальный класс Counter, объект которого будет передаваться во второй поток, а в методе Main
- 27. ПОТОКИ С ПАРАМЕТРАМИ И PARAMETERIZEDTHREADSTART Для решения данной проблемы рекомендуется объявлять все используемые методы и переменные
- 29. СИНХРОНИЗАЦИЯ ПОТОКОВ Нередко в потоках используются некоторые разделяемые ресурсы, общие для всей программы. Это могут быть
- 30. Здесь у нас запускаются пять потоков, которые работают с общей переменной x. И мы предполагаем, что
- 31. СИНХРОНИЗАЦИЯ ПОТОКОВ Решение проблемы состоит в том, чтобы синхронизировать потоки и ограничить доступ к разделяемым ресурсам
- 32. Для блокировки с ключевым словом lock используется объект-заглушка, в данном случае это переменная locker. Когда выполнение
- 33. МОНИТОРЫ Наряду с оператором lock для синхронизации потоков мы можем использовать мониторы, представленные классом System.Threading.Monitor. Фактически
- 34. Метод Monitor.Enter блокирует объект locker так же, как это делает оператор lock. А в блоке try...finally
- 35. МОНИТОРЫ Кроме блокировки и разблокировки объекта класс Monitor имеет еще ряд методов, которые позволяют управлять синхронизацией
- 36. КЛАСС AUTORESETEVENT Класс AutoResetEvent также служит целям синхронизации потоков. Этот класс является оберткой над объектом ОС
- 37. Во-первых, создаем переменную типа AutoResetEvent. Передавая в конструктор значение true, мы тем самым указываем, что создаваемый
- 38. После завершения работы вызывается метод waitHandler.Set, который уведомляет все ожидающие потоки, что объект waitHandler снова находится
- 39. КЛАСС AUTORESETEVENT Но если бы мы написали AutoResetEvent waitHandler = new AutoResetEvent(false), тогда объект изначально был
- 40. МЬЮТЕКСЫ Еще один инструмент управления синхронизацией потоков представляет класс Mutex, также находящийся в пространстве имен System.Threading.
- 41. Сначала создаем объект мьютекса: Mutex mutexObj = new Mutex(). Основную работу по синхронизации выполняют методы WaitOne()
- 42. Таким образом, когда выполнение дойдет до вызова mutexObj.WaitOne(), поток будет ожидать, пока не освободится мьютекс. И
- 43. МЬЮТЕКСЫ Мы использовали мьютекс для синхронизации потоков. Однако замечательная черта мьютексов состоит также в том, что
- 44. В данном случае для создания мьютекса мы используем другую перегрузку конструктора. Значение true, которое передается в
- 45. Третий параметр возвращает значение из конструктора. Если он равен true, то это означает, что мьютекс запрошен
- 46. СЕМАФОРЫ Еще один инструмент, который предлагает нам платформа .NET для управления синхронизацией, представляют семафоры. Семафоры позволяют
- 47. В данной программе читатель представлен классом Reader. Он инкапсулирует всю функциональность, связанную с потоками, через переменную
- 48. Основной функционал сосредоточен в методе Read, который и выполняется в потоке. В начале для ожидания получения
- 50. ИСПОЛЬЗОВАНИЕ ТАЙМЕРОВ Одним из важнейших классов, находящихся в пространстве имени System.Threading, является класс Timer. Данный класс
- 51. Первым делом создается объект делегата TimerCallback, который в качестве параметра принимает метод. Причем данный метод должен
- 53. Скачать презентацию


















































Создание архива данных. Извлечение данных из архива
Алгоритм: добыча клада
Творческое задание по МХК. 3 триместр
Разработка сетевых игр в Unity3D
Батут-арена
Трубичинское сельское поселение
Система управления НТД и требованиями. Техэксперт
Основные элементы системы управления базами данных Access
Git. Распределённая система управления версиями
Лабораторная работа
Языки программирования (python)
Информационные технологии при изучении математики
Асфальт 8. Какие машины бывают
Основы программирования на языке Pascal
Программирование разветвляющихся алгоритмов начала программирования
Единая платформа электронных сервисов для образования
Характеристика структуры и содержания КИМ ОГЭ
Кейс: сравнительный анализ НЛМК и Северсталь
Теория графов
Как настраивать рекламу в Facebook
Информационные системы и автоматизация информационных процессов
Эволюция интернета вещей
Планируемые мероприятия, проекты, конкурсы 2021 г
Завдання. Створити модель мережі
Personal computer
Информационная система ателье
Основы построения системы управления базами данных MS ACCESS
Подання та зберігання електронної звітності, реєстрація ПН. 10 способів зберегти свій час