ПОТОКИ Начальные сведения. Многопоточность Каждому традиционному приложению Win32 соответствует один (обычно) или несколько процессов (process). Процесс.

Slides:



Advertisements
Similar presentations
Схема распределения грантов городам-участникам программы Тасис (TCAS) Экологические гранты для муниципалитетов.
Advertisements

Глава 1 Принципы экономики 4. Кривая производственных возможностей.
Системы с наследованием. Если систему можно представить в виде : Где - непрерывные функции, то такая система называется системой с наследованием. Математическое.
Системы отбора. Условные обозначения (1) (2) (3) (4) (5) (6) (7) Математическое моделирование процессов отбора2.
Елена Станиславовна Петрова Учитель-логопед высшей категории ГДОУ детский сад №47 комбинированного вида Фрунзенского района г. Санкт-Петербурга 2011 год.
Савенко Мария Олеговна, 361 группа Научный руководитель: старший преподаватель В.С.Полозов.
Тушин Александр, ЗАО «Компания Либэр». 1) Предоставление полнотекстовых материалов 2) Поиск по внутреннему содержанию документа 3) Доступность в режиме.
Некомпенсаторное агрегирование и рейтингование студентов Авторы: Гончаров Алексей Александрович, Чистяков Вячеслав Васильевич. НФ ГУ ВШЭ 2010 год.
ПРИНЦИПЫ РАЗРАБОТКИ СИСТЕМЫ КЛАССА LEARNING MANAGEMENT SYSTEM И ОПЫТ ЕЕ ИСПОЛЬЗОВАНИЯ НА ФАКУЛЬТЕТЕ МЕНЕДЖМЕНТА Афанасьева С.В. Кафедра бизнес-информатики.
Bank ownership and lending behavior Alejandro Micco, Ugo Panizza Politicians and banks: Political influences on government-owned banks in emerging markets.
Директивы OpenMP Юрий Долгов, Дмитрий Шкурко. Optimization of applications for Intel* platforms Синтаксис OpenMP Общий синтаксис OpenMP директив Directive.
ООП Классы – 2. Ссылки Ссылка – еще одно имя объекта. Используйте ссылки вместо указателя. Это более безопасно. Complex c(10,10); Complex c2& = c; c2+=10;
Коммуникация и синхронизация процессов в централизованных архитектурах
Делегаты. Как созданные объекты могут посылать сообщения тем объектам, которые их породили? При программировании под Windows на С и C++ основное средство.
Особенности Java. Блок static static { } Создание и уничтожение объектов  new – создание объекта  finalyze()
Язык JavaScript Скриптовый язык для выполнения на html-страницах.
1 ОПЕРАЦИОННАЯ ПЛАТФОРМА. ОПРЕДЕЛЕНИЯ И КЛАССИФИКАЦИЯ ЛЕКЦИЯ №3 Калинина А.П.
InfoPath 2003 Выполнил: студент группы И-102 Пилипчук С.Н. Научный руководитель: Ильина О.П. Санкт - Петербург 2005г.
Демидов А.В г. Операционные системы Лекция 3 Процессы.
Freelance: правила игры. КИРИЛЛ РЕЗНИЧЕНКО + СПЕЦИАЛИСТ В ОБЛАСТИ 3D ГРАФИКИ + КООРДИНАТОР ОБРАЗОВАТЕЛЬНОГО ЦЕНТРА КОМПАНИИ AUTODESK ПРИ ВГУ.
Введение в параллельные вычисления. Технология программирования MPI (день седьмой) Антонов Александр Сергеевич, к.ф.-м.н., н.с. лаборатории Параллельных.
Анатомия класса. Схожесть с др. языками   С# похож на язык Java в том, что он требует, чтобы вся программная логика была заключена в определения типов.
Основы цифровой обработки речевых сигналов. Общая схема процесса речеобразования x[n] – дискретные отсчеты сигнала возбуждения y[n] – дискретные отсчеты.
Ввод-вывод в C# Сериализация.
Сравнение различных методов хранения XML в реляционных базах данных и в разных системах. Нгуен Тхань Хуен- 545 группа Руководитель : Б.А. Новиков Рецензент:
PHP как язык программирования. Типы данных логические величины int, integer – целые числа real, double, float – вещественные числа string – строки array.
Введение в параллельные вычисления. Технология программирования MPI (день второй) Антонов Александр Сергеевич, к.ф.-м.н., н.с. лаборатории Параллельных.
Гергель В.П. Общий курс Теория и практика параллельных вычислений Лекция 16 Методы разработки параллельных программ для многопроцессорных систем с общей.
Анализ производительности последовательного кода. Основы VTune™ Performance Analyzer ЛЕКЦИЯ №9, часть 2.
Software & Services Group, Developer Products Division Copyright© 2010, Intel Corporation. All rights reserved. *Other brands and names are the property.
"The European Molecular Biology Open Software Suite"
Практические рекомендации по распараллеливанию с помощью OpenMP и измерению ускорения. Ошибки при многопоточном программировании. Распределение заданий.
Синтаксис языка Java.
Пользовательские действия (custom actions) в JSP. JSTL.
Поиск ошибок в многопоточном приложении (на примере Thread Checker) ЛЕКЦИЯ 9, часть 1.
Санкт-Петербургский Государственный Университет Математико-Механический факультет Кафедра системного программирования Применение диаграмм двоичных решений.
Работа с массивами в C#.
Демидов А.В г. Операционные системы Лекция 4 Работа с файлами.
Управляемые провайдеры ADO.NET Подключение к базам данных.
Обработка исключений Гудов А.М., Завозкин С.Ю
ВВЕДЕНИЕ В ВЫЧИСЛИТЕЛЬНУЮ МАТЕМАТИКУ Лекция 5 6 октября 2009 ВЫЧИСЛИТЕЛЬНАЯ ЛИНЕЙНАЯ АЛГЕБРА.
XML - расширенный язык разметки Моисеевой О. Макушиной Д. (eXtensible Markup Language)
ПОТОКИ Начальные сведения. Многопоточность Каждому традиционному приложению Win32 соответствует один (обычно) или несколько процессов (process). Процесс.
XML Схемы XML документов. XML Schema созданая Microsoft позволяет избавиться от DTD блоков. Основа – использование пространств имен и очень точная типизация.
Обработка исключений в C# Единая техника обнаружения ошибок времени выполнения и передачи информации о них.
«Отгадай символы Рождества»
Microsoft TechDayshttp:// Александр Шаповал Эксперт по стратегическим технологиям
Введение в разработку многопоточных приложений.
R E F R I G E R A T I O N A N D A I R C O N D I T I O N I N G Блок мониторинга и централизованного управления АK-SM 350.
Simulatorpro.ru Презентация. Система предназначена для обучения и проверки знаний по технике безопасности и навыков работы на сложном технологическом.
Язык программирования C#
КРУПНЕЙШАЯ ТЕХНИЧЕСКАЯ КОНФЕРЕНЦИЯ MICROSOFT В УКРАИНЕ Metro приложения: работа с данными Краковецкий Александр, MVP/RD/PhD. DevRain Solutions.
1.NETConcurrent programmingNOEA / PQC 2007 Concurrent programming Threads –Introduction –Synchronization.
Saint Petersburg, 2011 Java Lecture Generics. Quiz ArrayList lst = new ArrayList(); Collection c = lst; lst.add("one"); lst.add(“two"); lst.add(“three");
Рассмотрим более подробно работу управляющей компоненты. В ЭС используются нетрадиционные методы управления. Это вызвано неформализованностью решаемых.
51) [Serializable] public class UserPrefs { public string WindowColor; public int FontSize; } 52) Листинг static void Main(string[] args) { UserPrefs.
Микропроцессорные системы Программирование INTEL 8086 Системная программа Debug.
Anekdot ANDROID CLUB Сегодня  Navigation Drawer  CardView  Calligraphy  TextToSpeech.
GSA Co., Ltd ( Tel : ~4, Fax : Refrigerated air dryer, Desiccant.
Параллельная работа сокетов в C#. Потоки в C# using System; using System.Threading; public class ThreadExample { public static void ThreadProc() { for.
Segments Introduction: slides minutes
Многопоточность в Java
Jim Fawcett CSE681 – Software Modeling and Analysis Fall 2005
Управление SQL Server c помощью PowerShell
Электрооборудование топливной системы ВС Выполнили: Нуртай Анет Исаева С Жумалиева Н Шведков И Группа: Ат-Ав-15.1 Проверила: Керибаева Т.
Класс Object Макаревич Л. Г..
class PrintOnetoTen { public static void main(String args[]) {
Акушерское отделение. Обсервация. Выполнили студентки группы ЛД16-05 Михно Екатерина и Бабина Софья.
Сортировка, поиск и фильтрация данных в базе данных и выборках
* Любой табак кроме WTO Депозит берется в течение 20 мин, как подошли все гости* В депозит входят все позиции в меню* Депозит не возвращается*
Presentation transcript:

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

Многопоточность Каждому традиционному приложению 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<100; i++) { rate+= r.Next(30)-15; if(rate<0) rate=0; Console.WriteLine(this);} }

Пример 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<100; i++) { rate+= r.Next(30)-15; if(rate<0) rate=0; Console.WriteLine(this); Thread.Sleep(500); }

Результаты