Российский Государственный Технологический Университет им. К.Э. Циолковского
Опубликован: 02.03.2007 | Доступ: свободный | Студентов: 5678 / 802 | Оценка: 3.96 / 3.45 | Длительность: 27:04:00
ISBN: 978-5-9556-0086-4
Лекция 15:

Потоки

Аннотация: В этой лекции рассказывается о принципах управления потоками в языке C#
Ключевые слова: объект, net, поток, локальная память, thread, local storage, TLS, общее адресное пространство, инструментарий, обмен информацией, операционная система, приложение, домен приложения, множества, домен, доступ, ссылка, application domain, interlock, mutex, класс, оболочка, приоритет потока, приостановка выполнения, значение, операторы, деятельность, конструктор, сигнатура, список, информация, запуск, планировщик , параметр, интервал, system, SUSPEND, deprecated, AS, event, AND, semaphore, synchronize, project, блокировка, deadlock, CAN, very, аргумент, Дополнение, диаграмма состояний, исключение, сочетания, фоновый режим, алгоритм, приоритет процесса, функция, место, метод класса, работ, завершение работы, очередь, генератор, race condition, ресурс, тупик, последовательность операторов, enqueue, dequeue, peek, цикла, foreach, опасная ситуация, Visual Basic, перечисление, pulse, владелец объекта, статический объект, открытый метод, алгоритмы хэширования

Процесс – объект, который создается Операционной Системой для приложения (не для приложения .NET) в момент его запуска. Характеризуется собственным адресным пространством, которое напрямую недоступно другим процессам.

Поток. В рамках процесса создаются потоки (один – первичный – создается всегда). Это последовательность выполняемых команд процессора. В приложении может быть несколько потоков (первичный поток и дополнительные потоки).

Потоки в процессе разделяют совместно используемые данные и имеют собственные стеки вызовов и локальную память потока (Thread Local StorageTLS). TLS потока содержит информацию о ресурсах, используемых потоком, о регистрах, состоянии памяти, выполняемой инструкции процессора.

Общее управление выполнением потоков осуществляется на уровне ОС. Нет ничего, кроме выполняющихся потоков, которыми руководит управляющий поток ОС. В этом управляющем потоке принимается решение относительно того, на протяжении какого времени будет выполняться данный поток. Управляющий поток ОС прерывает выполнение текущего потока, состояние прерванного потока фиксируется в TLS, после чего управление передается другому потоку.

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

Для обеспечения взаимодействия потоков в разных процессах используются каналы, обмен информацией через которые обеспечивается специальными системными средствами.


МНОГОПОТОЧНАЯ ОС. Прежде всего операционная система должна допускать параллельную (псевдопараллельную) работу нескольких программ.

Многопоточное приложение: отдельные компоненты работают одновременно (псевдоодновременно), не мешая друг другу.

Случаи использования многопоточности:

  • выполнение длительных процедур, ходом выполнения которых надо управлять;
  • функциональное разделение программного кода: пользовательский интерфейс – функции обработки информации;
  • обращение к серверам и службам Интернета, базам данных, передача данных по сети;
  • одновременное выполнение нескольких задач, имеющих различный приоритет.

Виды многопоточности:

  • Переключательная многопоточность. Основа – резидентные программы. Программа размещалась в памяти компьютера вплоть до перезагрузки системы, и управление ей передавалось каким-либо заранее согласованным способом (предопределенной комбинацией клавиш на клавиатуре).
  • Совместная многопоточность. Передача управления от одной программы другой. При этом возвращение управления – это проблема выполняемой программы. Возможность блокировки, при которой аварийно завершаются ВСЕ программы.
  • Вытесняющая многопоточность. ОС централизованно выделяет всем запущенным приложениям определенный квант времени для выполнения в соответствии с приоритетом приложения. Реальная возможность работы нескольких приложений в ПСЕВДОПАРАЛЛЕЛЬНОМ режиме. "Зависание" одного приложения не является крахом для всей системы и оставшихся приложений.
kewezok kewezok
kewezok kewezok
Елена Шляхт
Елена Шляхт
Объясните плиз в чем отличие а++ от ++а
Почему результат разный?
int a=0, b=0;
Console.WriteLine(a++); //0
Console.WriteLine(++b); //1
a++;
++b;
Console.WriteLine(a); //2
Console.WriteLine(b); //2