Динамические массивы Windows Forms. Потоки. (Лекция 6)

Содержание

Слайд 2

Обобщенные типы Обобщенные типы - это типы с параметрами. Часть системы

Обобщенные типы

Обобщенные типы - это типы с параметрами.
Часть системы типов

.NET Framework, которая позволяет определять тип.
Слайд 3

public class CacheShirt { private Shirt shirt; public void add(Shirt shirt){

public class CacheShirt {
private Shirt shirt;
public void add(Shirt shirt){
this.shirt

= shirt;
}
public Shirt get(){
return this.shirt;
}
}

public class CacheString {
private string message = "";
public void add(string message){
this.message = message;
}
public string get(){
return this.message;
}
}

Простые классы Cache и Generic-класс Cache

public class CacheAny {
private T t;
public void add(T t){
this.t = t;
}
public T get(){
return this.t;
}
}

Слайд 4

Синтаксис Generic-типов Класс Gen имеет два члена типа T и U.

Синтаксис Generic-типов

Класс Gen имеет два члена типа T и U.
Код,

использующий этот класс, определит типы для T и U. В зависимости от того, как класс Gen используется в коде, могут иметь тип string, int, пользовательский тип или другую их комбинацию.

class Gen
{
public T t;
public U u;
public Gen(T _t, U _u)
{
t = _t;
u = _u;
}
}

Слайд 5

Применение обобщений Для использования обобщений нужно указать его тип. // Add

Применение обобщений

Для использования обобщений нужно указать его тип.

// Add two strings

using the Gen class
Gen ga = new Gen("Hello, ", "World!");
Console.WriteLine(ga.t + ga.u);
// Add a double and an int using the Gen class
Gen gb = new Gen(10.125, 2005);
Console.WriteLine(gb.t + gb.u);
Слайд 6

Обобщенные типы (Generic Types) Преимущества: производительность; вместо использования объектов можно использовать

Обобщенные типы (Generic Types)

Преимущества:
производительность;
вместо использования объектов можно использовать класс List

из пространства имен System.Collection.Generic, который позволяет определить тип элемента при создании коллекции.

List list = new List();
list.Add(44);//нет упаковки – элементы
//сохраняются в List
int il=list[0];// распаковка не нужна
foreach (int i2 in list)
{ Console.WriteLine(i2);
}

Слайд 7

Преимущества: безопасность типов: например, когда в классе ArrayList сохраняются объекты, то

Преимущества:
безопасность типов:
например, когда в классе ArrayList сохраняются объекты, то в коллекцию

могут быть вставлены объекты различных типов.

ArrayList list = new ArrayList();
list.Add(44); // вставка целого
list.Add("mystring"); // вставка строки
list.Add(new MyClass ()) ; // вставка объекта

foreach (int i in list) {
Console.WriteLine(i);
}// возникнет ошибка во время выполнения!!!

List list = new List();
list.Add(44) ;
list.Add("mystring"); // ошибка компиляции
list.Add(new MyClass()); // ошибка компиляции

Слайд 8

Использование ограничений Ограничения — позволяют определить требования к типам, которыми разрешено

Использование ограничений

Ограничения — позволяют определить требования к типам, которыми разрешено заменять

обобщения в коде.
Обобщения поддерживают четыре типа ограничений:
По интерфейсу.
По базовому классу.
По конструктору.
По ссылочному или значимому типу.
Для применения ограничений к обобщению используется секция where.
Слайд 9

// класс обобщения может использоваться только типами, // реализующими интерфейс IComparable

// класс обобщения может использоваться только типами,
// реализующими интерфейс IComparable
class

CompGen
where T : IComparable
{
public T t1;
public T t2;
public CompGen(T _t1, T _t2)
{
t1 = _t1;
t2 = _t2;
}
public T Max()
{
if (t2.CompareTo(t1) < 0)
return t1;
else
return t2;
}
}
Слайд 10

Динамические массивы Динамическим называется массив, размер которого может меняться во время исполнения программы.

Динамические массивы

Динамическим называется массив, размер которого может меняться во время исполнения

программы.
Слайд 11

Библиотека .NET Framework содержит большой набор классов-коллекций, которые используются при работе

Библиотека .NET Framework содержит большой набор классов-коллекций, которые используются при

работе с наборами элементов.
Классы-коллекции из пространства имен System.Collections поддерживают слабо типизированные коллекции, элементы которых имеют тип System.Object. Эти коллекции поддерживаются всеми версиями .NET Framework, начиная с 1.0.
В версиях .NET Framework 2.x и выше в пространстве имен System.Collections.Generic определены интерфейсы и классы обобщенных коллекций, которые дают возможность создавать строго типизированные коллекции.

Классы-коллекции

Слайд 12

В версиях 1.x было определено небольшое число строго типизированных коллекций в

В версиях 1.x было определено небольшое число строго типизированных коллекций

в пространстве имен System.Collection.Specialized ,
а в пространстве имен System.Collections определены абстрактные классы, которые можно было использовать как базовые для создания пользовательских типизированных (strong typed) коллекций.
CollectionBase : IList, ICollection, IEnumerable
DictionaryBase : IDictionary, ICollection, IEnumerable
ReadOnlyCollectionBase : ICollection, IEnumerable
NameObjectCollectionBase : ICollection, IEnumerable, ISerializable, IDeserializationCallback
В версиях 2.x и выше определены обобщенные классы-коллекций в пространстве имен System.Collections.Generic – это прямые аналоги обычных типов-коллекций.

Классы-коллекции

Слайд 13

public interface ICollection : IEnumerable { int Count {get;} - число

public interface ICollection : IEnumerable {
int Count {get;} - число

элементов в коллекции
bool IsSynchronized {get;} - информация о том, является ли доступ синхронизированным ( thread-safe)
object SyncRoot {get;} - дает доступ к объекту синхронизации
void CopyTo( Array array, int index );
- копирует элементы коллекции в массив Array
...
}

public interface ICloneable {
object Clone(); - создает новый объект–копию
}

Интерфейс ICollection

Интерфейс ICollection реализуют все необобщенные и некоторые обобщенные классы-коллекции

Слайд 14

public interface IList : ICollection, IEnumerable { object this[ int index

public interface IList : ICollection, IEnumerable {
object this[ int index ]

{get; set;}
bool IsFixedSize {get;}
bool IsReadOnly {get;}
int Add( object value );
void Clear();
bool Contains( object value );
int IndexOf( object value );
void Insert( int index, object value );
void Remove( object value );
void RemoveAt( int index );
}

В коллекции, реализующей интерфейс IList:
определена операция индексирования с целым индексом;
в коллекцию можно вставлять элементы.

IList реализован в коллекциях, к элементам которых можно обращаться по индексу, в коллекцию можно добавлять элементы (реализован в ArrayList).

Интерфейс IList

Слайд 15

Обобщенный интерфейс ICollection public interface ICollection : IEnumerable , IEnumerable {

Обобщенный интерфейс ICollection

public interface
ICollection : IEnumerable, IEnumerable
{ int Count { get;

}
bool IsReadOnly { get; }
void Add (T item);
void Clear ();
bool Contains ( T item);
void CopyTo (T[] array, int arrayIndex);
boolean Remove ( T item);
}

Обобщенный интерфейс IList

public interface
IList : ICollection, IEnumerable, IEnumerable
{ T this [int index] { get; set; }
int IndexOf (T item);
void Insert (int index, T item);
void RemoveAt (int index);
}

Интерфейс ICollection и IList

Слайд 16

Следующие обобщенные интерфейсы определены в пространстве имен System.Collections.Generic. public interface IEnumerable

Следующие обобщенные интерфейсы определены в пространстве имен System.Collections.Generic.

public interface IEnumerable

: IEnumerable
{ IEnumerator GetEnumerator ();}
public interface IEnumerator : IDisposable, IEnumerator
{ T Current { get; } }

public interface IEnumerator {
object Current {get;}
bool MoveNext();
void Reset();
}
public interface IEnumerable {
IEnumerator GetEnumerator();
}

Следующие обычные(необобщенные) интерфейсы определены в пространстве имен System.Collections.

Интерфейсы для итераторов

Слайд 17

Классы-коллекции из пространства имен System.Collections

Классы-коллекции из пространства имен System.Collections

Слайд 18

Классы-коллекции из пространства имен System.Collections.Specialized

Классы-коллекции из пространства имен System.Collections.Specialized

Слайд 19

Обобщенные классы Queue и Stack

Обобщенные классы Queue и Stack

Слайд 20

Обобщенные классы List и LinkedList

Обобщенные классы List и LinkedList

Слайд 21

Обобщенные классы List и LinkedList

Обобщенные классы List и LinkedList

Слайд 22

Классы-словари (хэш-таблицы) используются для работы с множеством пар . В паре

Классы-словари (хэш-таблицы) используются для работы с множеством пар <ключ, значение>.
В

паре <ключ - значение> ключ обеспечивает косвенную ссылку на данные (значение) :
ключ не может иметь значение null, value может иметь значение null;
коллекция не может содержать две пары с одинаковым ключом.
С помощью хэш-функции ключ преобразуется в целочисленное значение (хэш-код) из некоторого диапазона 0, ... N-1. Хэш-код используется как индекс в таблице (hash table), в которой хранятся прямые или косвенные ссылки на данные (значения).
Классы-словари реализуют интерфейсы IDictionary или IDictionary .

Классы-словари (хэш-таблицы)

Слайд 23

В необобщенных коллекциях-словарях каждый элемент (пара ключ-значение) хранится в объекте DictionaryEntry.

В необобщенных коллекциях-словарях каждый элемент (пара ключ-значение) хранится в объекте

DictionaryEntry.

public struct DictionaryEntry {
public DictionaryEntry( object key, object value );
public object Key {get; set;}
public object Value {get; set;}
}

В обобщенных коллекциях-словарях каждый элемент (пара ключ-значение) хранится в объекте KeyValuePair < TKey,TValue>.

public struct KeyValuePair < TKey,TValue>
{ public KeyValuePair ( TKey key, TValue value );
public TKey Key { get; }
public TValue Value { get; }
}

Структуры для элементов коллекций

Слайд 24

Интерфейс IDictionary реализуют классы: public interface IDictionary : ICollection, IEnumerable {

Интерфейс IDictionary реализуют классы:

public interface IDictionary : ICollection, IEnumerable {

bool IsFixedSize {get;}
bool IsReadOnly {get;}
object this[ object key] {get; set;}
ICollection Keys {get;}
ICollection Values {get;}
void Add ( object key, object value);
void Clear();
void Remove( object key );
bool Contains ( object key );
IDictionaryEnumerator GetEnumerator();
}

Интерфейс IDictionary

Hashtable
HybridDictionary
ListDictionary.

DictionaryBase
SortedList

Слайд 25

public interface IDictionary : ICollection >, IEnumerable >, IEnumerable { TValue

public interface IDictionary < TKey,TValue> :
ICollection < KeyValuePair < TKey,TValue>>,


IEnumerable < KeyValuePair < TKey,TValue>>,
IEnumerable
{ TValue this [ TKey key];
ICollection Keys { get; }
ICollection Values { get; }
void Add ( TKey key, TValue value);
bool ContainsKey ( TKey key);
bool Remove ( TKey key);
bool TryGetValue (TKey key, out TValue value);
}

Интерфейс IDictionary

Слайд 26

Хэш-функция используется для быстрой генерации числа (hash code), отвечающего значению объекта.

Хэш-функция используется для быстрой генерации числа (hash code), отвечающего значению объекта.

По умолчанию используется функция GetHashCode(). Для корректной работы классов-словарей для хэш-функции GetHashCode() должно быть выполнено:
для двух совпадающих объектов одного и того же типа хэш-функция должна возвращать одно и тоже значение;
реализация GetHashCode() не должна бросать исключения;
если в производном классе переопределен метод GetHashCode(), в нем также должен быть переопределен метод Equals() так, чтобы два равных объекта имели одно и то же значение хэш-кода.
Метод класса Object может использоваться как хэш-функция, если равенство объектов понимается как равенство ссылок.
public virtual int GetHashCode();
Реализация GetHashCode() из класса String возвращает уникальный хэш-код для каждого значения string.

Хэш-функция

Слайд 27

Классы-словари из пространства имен System.Collections

Классы-словари из пространства имен System.Collections

Слайд 28

Классы-словари из пространства имен System.Collections.Specialized

Классы-словари из пространства имен System.Collections.Specialized

Слайд 29

Обобщенные классы-словари

Обобщенные классы-словари

Слайд 30

Начиная с версии 3.5 .NET Framework поддерживается неупорядоченная коллекция из несовпадающих

Начиная с версии 3.5 .NET Framework поддерживается неупорядоченная коллекция из

несовпадающих элементов

public class HashSet : ICollection, IEnumerable,
IEnumerable, ISerializable, IDeserializationCallback

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

public bool SetEquals( IEnumerable other ); // true, если
// коллекции совпадают;
publi bool Overlaps( IEnumerable other ); // true, если
// в коллекциях есть хотя бы один совпадающий элемент;
public void ExceptWith( IEnumerable other ); // удаляет из
// коллекции все элементы, которые есть в другой коллекции;
public void UnionWith( IEnumerable other ); // добавляет в
// коллекцию элементы из другой коллекции (только несовпадяающие);
public void IntersectWith( IEnumerable other ); // оставляет в
// коллекции только элементы, которые есть и в другой коллекции;

Коллекция HashSet

Слайд 31

using System; using System.Collections.Generic; namespace ConsoleApplication1{ class Program{ static void Main(){

using System;
using System.Collections.Generic;
namespace ConsoleApplication1{
class Program{
static void Main(){
// Создадим

два множества
SortedSet ss = new SortedSet();
SortedSet ss1 = new SortedSet();
ss.Add('A'); ss.Add('B'); ss.Add('C');
ss.Add('Z');
ShowColl(ss, "Первая коллекция: ");
ss1.Add('X'); ss1.Add('Y'); ss1.Add('Z');
ShowColl(ss1, "Вторая коллекция");
ss.UnionWith(ss1);
ShowColl(ss,"Объединение множеств:");
ss.ExceptWith(ss1);
ShowColl(ss, "Вычитание множеств");
//Сравнение множеств???
if (CmpSortedSet)
Console.WriteLine("Мн-во ss = мн-ву ss1 ");
else
Console.WriteLine(" Мн-во ss != мн-ву ss1");
}

Работа с итератором

static void ShowColl
(SortedSet ss, string s){
Console.WriteLine(s);
foreach (char ch in ss)
Console.Write(ch + " ");
Console.WriteLine("\n");
}

bool CmpSortedSet(SortedSet a, SortedSet b){
if (a == b) return true;
if ((a == null) || (b == null) || (a.Count != b.Count))
return false;
SortedSet.Enumerator
e1 = a.GetEnumerator(),
e2 = b.GetEnumerator();
while (e1.MoveNext() && e2.MoveNext())
if (e1.Current != e2.Current)
return false;
return true;
}

Слайд 32

Введение в разработку форм для Windows

Введение в разработку форм для Windows

Слайд 33

Выбор между формами Windows Forms и веб-формами Выбор нужной технологию на

Выбор между формами Windows Forms и веб-формами

Выбор нужной технологию на основе

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

Инструменты Visual Studio для разработки приложений Windows Визуальные конструкторы для Windows

Инструменты Visual Studio для разработки приложений Windows

Визуальные конструкторы для Windows

Forms с элементами управления для перетаскивания.
Визуальные конструкторы для Windows Presentation Foundation.
Оптимизированные редакторы кода, включающие в себя завершение операторов, проверку синтаксиса и другие возможности IntelliSense.
Встроенные средства компиляции и отладки.
Средства управления проектом, позволяющие создавать и управлять файлами приложения, в том числе локальным развертыванием, через интрасеть или Интернет.
Слайд 35

Архитектура Windows Forms System.Drawing доступ к базовой функциональности графики GDI+, более

Архитектура Windows Forms

System.Drawing
доступ к базовой функциональности графики GDI+,
более совершенная функциональность предоставляется

в System.Drawing.Drawing2D, System.Drawing.Imaging, System.Drawing.Text.
http://msdn.microsoft.com/ru-ru/system.drawing.aspx
System.Windows.Forms
содержит классы для создания Windows приложений,
доступ к стандартным элементам управления и компонентам
http://msdn.microsoft.com/ru-ru/system.windows.forms.aspx
Слайд 36

Задание свойств форм

Задание свойств форм

Слайд 37

Изменение внешнего вида и поведения формы Установка заголовка формы (свойство Text)

Изменение внешнего вида и поведения формы

Установка заголовка формы (свойство Text)
Установка типа

границы (свойство FormBorderStyle )
Настройка состояния формы при запуске (WindowState):
Normal, Minimized и Maximized
Изменение размера формы (свойство Size)
Прозрачность и непрозрачность форм (свойство Opacity )

Forml.Text = "This is Form 1";

aForm.FormBorderStyle = FormBorderStyle.Fixed3D;

aForm.Size = new Size(300, 200);

aForm.Opacity = 0.5;

Слайд 38

Настройка стартовой формы Стартовая форма — это форма, которая при выполнении

Настройка стартовой формы

Стартовая форма — это форма, которая при выполнении приложения

загружается первой.
Стартовый объект указывается в методе Main.
По умолчанию этот метод расположен в классе Program и автоматически создается Visual Studio.
Стартовый объект обозначен строкой:
Как сделать стартовую форму невидимой (свойство Visible ):

Application.Run(new Form1());

aForm.Visible = false;

Слайд 39

Обработка событий формы События

Обработка событий формы

События

Слайд 40

Реализация обработчика события загрузки формы private void Form1_Load(object sender, EventArgs e)

Реализация обработчика события загрузки формы

private void Form1_Load(object sender, EventArgs e)
{

this.Text = "Стартовая форма";
this.FormBorderStyle = FormBorderStyle.Fixed3D;
this.Size = new Size(300, 200);
this.Opacity = 0.8;
this.TopMost = true;
MessageBox.Show("Посмотрите на свойства формы", "Внимание!!!");
}
Слайд 41

Добавление элементов управления на форму

Добавление элементов управления на форму

Слайд 42

Привязка элемента управления к форме Привязка Определяет, какие края элемента управления

Привязка элемента управления к форме

Привязка
Определяет, какие края элемента управления не меняют

позицию по отношению к краям родительского контейнера
Для привязки элемента управления к форме
Установите свойство Anchor
Значение по умолчанию: Top, Left
Другие возможные значения: Bottom, Right
Слайд 43

Событийная модель в .NET Framework Button1 this.button1.Click += new System.EventHandler(this.button1_Click); private

Событийная модель в .NET Framework

Button1

this.button1.Click += new System.EventHandler(this.button1_Click);

private void button1_Click(object sender,

System.EventArgs e)
{

}
Слайд 44

public delegate void EventHandler (object sender, AlarmEventArgs e); Что такое делегаты?

public delegate void EventHandler
(object sender, AlarmEventArgs e);

Что такое делегаты?

Делегат
Привязывает события к

методам
Можно привязать к одному или нескольким методам
Когда событие регистрируется приложением
ЭУ генерирует событие через вызов делегата для события
Делегат в свою очередь запускает связанный с ним метод
Слайд 45

Как создавать обработчики событий private void button1_Click(object sender, System.EventArgs e) { MessageBox.Show("MyHandler received the event"); }

Как создавать обработчики событий

private void button1_Click(object sender,
System.EventArgs e)
{
MessageBox.Show("MyHandler received the

event");
}
Слайд 46

Как динамически добавлять и удалять обработчики событий Для динамического связывания события

Как динамически добавлять и удалять обработчики событий

Для динамического связывания события (имя

события - Click) с обработчиком события, используйте оператор +=
Для динамического удаления связи события (Click) с обработчиком события используйте оператор -=

this.button2.Click -= new
System.EventHandler(this.button1_Click);

this.button2.Click += new
System.EventHandler(this.button1_Click);

Слайд 47

Элементы управления, отображающие список ListBox, ComboBox, CheckedListBox. отличаются внешним видом и

Элементы управления, отображающие список

ListBox, ComboBox, CheckedListBox.
отличаются внешним видом и функциональными

возможностями,
одинаково формируют и представляют списки данных и включают в себя коллекцию Items
Слайд 48

Элементы управления, отображающие список Для добавления элемента используется метод Items.Add Для

Элементы управления, отображающие список

Для добавления элемента используется метод Items.Add
Для добавления несколько

элементов используется метод AddRange
С помощью метода Items.Insert можно добавлять элемент в отдельный индекс списка
С помощью метода Items.Remove можно удалить элемент из списка
Метод Items.RemoveAt удаляет элемент под указанным индексом

listBoxl.Items.Add("Limtu");

listBox1.Items.AddRange(new String[] {"Первый", "Второй", "Третий"});

listBox1.Items.Insert(2, "Третьим будешь?");

listbox1.Items.Remove(“string removed");

listBox1.Items.RemoveAt(2);

Слайд 49

Что такое объект Graphics? Объект Graphics : Предоставляет холст, на который

Что такое объект Graphics?

Объект Graphics :
Предоставляет холст, на который выводится информация
Предоставляет

методы для вывода текста и графики в указанную позицию
Предоставляет набор инструментов для изменения выводимой информации

Graphics myGraphic = this.CreateGraphics();
//draw lines or outlined shapes using a Pen
myGraphic.DrawLine(myPen,X1,Y1,X2,Y2) ;
//draw filled shapes using a Brush
myGraphic.FillRectangle(myBrush,X1,Y1,X2,Y2);
//draw text using a Font and a Brush
myGraphic.DrawString(myText,myFont,myBrush,X1,Y1);

Слайд 50

Создание перьев, кистей и шрифтов Pen myPen = new Pen(Color.Blue); Font

Создание перьев, кистей и шрифтов

Pen myPen = new Pen(Color.Blue);

Font myFont

= new Font("Arial", 12);

SolidBrush myBrush = new SolidBrush(Color.Blue);

Слайд 51

Рисование линий и фигур Создайте объект Graphics вызовом метода System.Windows.Forms.Control.CreateGraphics. Создайте

Рисование линий и фигур

Создайте объект Graphics вызовом метода
System.Windows.Forms.Control.CreateGraphics.
Создайте объект Pen.
Вызовите член

класса Graphics для рисования на элементе управления с помощью объекта Реп.

private void Form1_Paint(object sender, PaintEventArgs e)
{
Graphics g = this.CreateGraphics();
Pen p = new Pen(Color.Red, 5);
g.DrawRectangle(p, 10, 10, 100, 100);
}

Слайд 52

Настройка перьев Для рисования пунктирной линии создайте экземпляр класса Реп и

Настройка перьев

Для рисования пунктирной линии создайте экземпляр класса Реп и присвойте

свойству Pen.DashStyle одно из следующих значений:
DashStyle.Dash, - тире
DashStyle.DashDot,
DashStyle.DashDotDot,
DashStyle.Dot - точка
DashStyle. Solid.
используется пространство имен System.Drawing.Drawing2D

Graphics g = this.CreateGraphics();
Pen р = new Pen(Coloг.Red, 5);
p.DashStyle = DashStyle.Dot;
g.DrawLine(p, 50, 25, 400, 25);

Слайд 53

Заливка фигур Применяются методы Fill. требуют экземпляр класса Brush. Класс Brush

Заливка фигур

Применяются методы Fill.
требуют экземпляр класса Brush.
Класс Brush — абстрактный,

поэтому сначала необходимо создать экземпляр одного из его производных классов
System.Drawing.Drawing2D.HatchBrush
System.Drawing. TextureBrush
System.Drawing Drawing2D.PathGradientBrush
System.Drawing.SolidBrush
System.Drawing.Drawing2D.LinearGradientBrush

Graphics g = this.CreateGraphics();
Brush b = new SolidBrush(Color.Maroon);
// Создать массив точек points
g.FillPolygon(b, points)

Слайд 54

Введение в многопоточное программирование

Введение в многопоточное программирование

Слайд 55

Многопоточность Потоки выполнения (threads of execution, нити, треды, потоки, легковесные процессы)

Многопоточность

Потоки выполнения (threads of execution, нити, треды, потоки, легковесные процессы) - параллельно выполняющиеся потоки управления в адресном пространстве

одного процесса.

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

Слайд 56

Потоки выполнения и процессы Различные процессы выполняются в разных адресных пространствах.

Потоки выполнения и процессы

Различные процессы выполняются в разных адресных пространствах.
Как локальные, так и глобальные переменные процессов являются

«собственными».

Различные потоки выполняются в одном адресном пространстве.
Потоки выполнения имеют «собственный» стек и набор регистров. Глобальные данные являются общими.

Потоки выполнения

Процессы

Слайд 57

Почему используются потоки выполнения ?

Почему используются потоки выполнения ?

Слайд 58

Для использования технических возможностей многопроцессорных систем при сложных вычислениях; Отдельные потоки

Для использования технических возможностей многопроцессорных систем при сложных вычислениях;
Отдельные потоки выполнения

для различных задач:
Сохранение пользовательского интерфейса «живым»;
Ожидание ввода/вывода;
Деление задач комплексного тестирования и циклов.
Создание серверов
Локальных и сетевых.

Когда следует использовать потоки выполнения ?

Слайд 59

Проблемы при использовании потоков выполнения Разделяемые ресурсы; Взаимодействие между потоками выполнения;

Проблемы при использовании потоков выполнения

Разделяемые ресурсы;
Взаимодействие между потоками выполнения;
Чрезмерное использование многопоточности

отнимает ресурсы и время CPU на создание потоков и переключение между потоками.