ПОТОКИ Начальные сведенияПОТОКИ Начальные сведения.

Презентация:



Advertisements
Похожие презентации
Модель приложений.NET. Среда платформы Win32, в которой выполняется программа, называется ее процессом. Эта среда состоит из: адресного пространства,
Advertisements

Многопоточное программирование ( часть 1) Лекция 10.
Делегаты Как созданные объекты могут посылать сообщения тем объектам, которые их породили? При программировании под Windows на С и C++ основное средство.
Параллелизм и потоки в Java For students of university Author: Oxana Dudnik.
Статические поля класса Статические поля хранят данные, общие для всех элементов класса. Статическое поле существует в единственном экземпляре для всех.
Многопоточное программирование на Java Java Advanced.
Многопоточное программирование Синхронизация потоков Лекция 11.
Многопоточное программирование на Java Java Advanced.
Создание клонируемых объектов (интерфейс IClonable)
©Павловская Т.А. (СПбГУ ИТМО) Курс «С#. Программирование на языке высокого уровня» Павловская Т.А.
Введение в разработку многопоточных приложений. Поморгаем int main() { while(true) { EnableLedOne(); DisableLedOne(); }
1 Средства асинхронного программирования, Многопоточное программирование, Синхронизация потоков в.Net Наговицына Полина, 444гр Григорьева.
События События Важная роль делегатов заключается в том, что на них основана модель событий С#. Применение событий вовсе не ограничено приложениями с графическим.
Наследование Наследование – это отношение является между классами. class Person { string first_name; int birth_year;... } class Student : Person { float.
Учебный курс Объектно-ориентированный анализ и программирование Лекция 7 Методы как средство реализации операций Лекции читает кандидат технических наук.
1 © Luxoft Training 2012 Java: расширенные вопросы Модуль #8.
Дружественные функции Дружественные функции – это функции, объявленные вне класса, но имеющие доступ к закрытым и защищенным полям данного класса Дружественная.
Лекция 8 Область видимости Время жизни. Область видимости Область видимости – характеристика именованного объекта Область видимости - часть текста программы,
1 Классы в Java Ключевое слово class означает: Я говорю тебе, как выглядит новый тип объекта. Класс является базовым элементом объектно-ориентированного.
Подготовил учитель информатики МОУ СОШ 36 г. Липецка Ефремов Максим Станиславович.
Транксрипт:

ПОТОКИ Начальные сведения

Многопоточность Каждому традиционному приложению Win32 соответствует один (обычно) или несколько процессов (process). Процесс это единица, которая характеризуется собственным набором внешних ресурсов и выделенной приложению областью оперативной памяти. Для каждого файла ЕХЕ операционная система создает отдельную изолированную область в оперативной памяти, которой процесс пользуется в течение всего своего жизненного цикла.

Многопоточность Каждому процессу соответствует один (по крайней мере) или несколько потоков. Поток (thread) можно представить как специфический путь выполнения внутри процесса Win32 (thread в буквальном переводе с английского означает «нить»). Первый поток, создаваемый в процессе, называется первичным процессом (primary thread). В любом процессе существует по крайней мере один поток, который выполняет роль точки входа для приложения. В традиционных графических приложениях Windows такой точкой входа является метод WinMain (), а в консольных приложениях метод main().

Многопоточность Основная цель, для которой создаются многопоточные приложения (вместо использования единственного потока), повышение производительности и сокращение времени отклика приложения. Многопоточные приложения на однопроцессорном компьютере создают иллюзию одновременного выполнения сразу нескольких дел. Управление потоками производится на уровне операционной системы.

Многопоточность Компьютеры с единственным центральным процессором в действительности не могут одновременно обрабатывать более одного потока. Иллюзия многозадачности достигается тем, что каждому потоку выдаются (в соответствии с его приоритетом) специальные кванты времени (time-slice). При исчерпании потоком выделенного ему кванта времени ресурсы центрального процессора передаются другим потокам, а первый поток вновь ждет своей очереди. Для того чтобы поток мог продолжить выполнение с того места, на котором его работа была остановлена, он обеспечивается возможностью записи в локальную память потока (Thread Local Storage) и отдельным стеком вызовов.

Пространство имен System.Threading Тип Назначение Interlocked Для синхронизированного доступа к общим данным Monitor Обеспечивает синхронизацию потоковых объектов при помощи блокировок и управления ожиданием Mutex Примитив синхронизации, используемый для синхронизации разных процессов Thread Представляет поток, работающий в среде выполнения.NET При помощи этого типа можно порождать в текущем домене приложения новые потоки ThreadPool Используется для управления набором взаимосвязанных потоков Timer Определяет делегат, который будет вызван в указанное время. Операция ожидания выполняется потоком в пуле потоков WaitHandle Представляет во время выполнения все объекты синхронизации (которые позволяют многократное ожидание) ThreadStart Представляет делегат со ссылкой на метод, который должен быть выполнен перед запуском потока TimerCallback Делегат для объектов Timer WaitCallback Делегат, который представляет метод обратного вызова для рабочих элементов ThreadPool

Работа с классом Thread Самый простой тип в пространстве имен System.Threading это класс Thread. Этот класс в.NET не более чем объектная оболочка вокруг некоторого этапа выполнения программы внутри домена приложения. Статические переменные и методы Назначение CurrentThread Это свойство только для чтения возвращает ссылку на поток, выполняемый в настоящее время GetData() SetData()Возвращает/устанавливает значение для указанного слота в текущем потоке GetDomain() GetDomainlD() Возвращает ссылку на домен приложения (идентификатор домена приложения), в рамках которого работает указанный поток Sleep() Приостанавливает выполнение текущего потока на указанное пользователем время

Работа с классом Thread Обычные члены типа Thread Переменные и методы Назначение IsAlive Это свойство возвращает «true» или «false» в зависимости от того, запущен поток или нет IsBackground Свойство предназначено для получения или установки значения, которое показывает, является ли этот поток фоновым Name Свойство для установки дружественного текстового имени потока Priority Позволяет получить/установить приоритет потока (используются значения из перечисления ThreadPriority) ThreadState Возвращает информацию о состоянии потока (используются значения из перечисления ThreadState) Interrupt() Прерывает работу текущего потока Join()Ждет появления другого потока (или указанный промежуток времени) и завершается Resume() Продолжает работу после приостановки работы потока Start() Начинает выполнение потока, определенного делегатом ThreadStart Suspend() Приостанавливает выполнение потока.

Пример public class Car { string name; int rate; Random r= new Random(); public Car(string name, int rate) { this.name=name; this.rate=rate; } public override string ToString() { return(" "+this.name+", скорость="+this.rate); } public void Pusk() { for(int i=0; i

Пример public class Road { static void Main(string[] args) { Car first = new Car("Камаз-бетономешалка", 100); first.Pusk(); Car second = new Car("Ока-кабриолет", 50); second.Pusk(); }

Результаты

Пример public class Road { static void Main(string[] args) { Car first = new Car("Камаз-бетономешалка", 100); Thread firstThread =new Thread(new ThreadStart(first.Pusk)); firstThread.Start(); Car second = new Car("Ока-кабриолет", 50); Thread secondThread =new Thread(new ThreadStart(second.Pusk)); secondThread.Start(); }

Результаты

Пример public void Pusk() { for(int i=0; i

Результаты