Герберт Шилдт - C# 4.0 полное руководство - 2011

Здесь есть возможность читать онлайн «Герберт Шилдт - C# 4.0 полное руководство - 2011» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: Старинная литература, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

C# 4.0 полное руководство - 2011: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «C# 4.0 полное руководство - 2011»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

C# 4.0 полное руководство - 2011 — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «C# 4.0 полное руководство - 2011», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Когда порожденный поток начинает выполняться, он получает приоритет, устанавливаемый по умолчанию. Приоритет потока можно изменить с помощью свойства Priority, являющегося членом класса Thread. Ниже приведена общая форма данного свойства:

public ThreadPriority Priority{ get; set; }

где ThreadPriority обозначает перечисление, в котором определяются приведенные ниже значения приоритетов.

ThreadPriority.Highest ThreadPriority.AboveNormal ThreadPriority.Normal ThreadPriority.BelowNormal ThreadPriority.Lowest

По умолчанию для потока устанавливается значение приоритета ThreadPriority. Normal.

Для того чтобы стало понятнее влияние приоритетов на исполнение потоков, обратимся к примеру, в котором выполняются два потока: один с более высоким приоритетом. Оба потока создаются в качестве экземпляров объектов класса MyThread. В методе Run () организуется цикл, в котором подсчитывается определенное число повторений. Цикл завершается, когда подсчет достигает величины 1000000000 или когда статическая переменная stop получает логическое значение true. Первоначально переменная stop получает логическое значение false. В первом потоке, где производится подсчет до 1000000000, устанавливается логическое значение true переменной stop. В силу этого второй поток оканчивается на следующем своем интервале времени. На каждом шаге цикла строка в переменной currentName проверяется на наличие имени исполняемого потока. Если имена потоков не совпадают, это означает, что произошло переключение исполняемых задач. Всякий раз, когда происходит переключение задач, имя нового потока отображается и присваивается переменной currentName. Это дает возможность отследить частоту доступа потока к ЦП. По окончании обоих потоков отображается число повторений цикла в каждом из них.

// Продемонстрировать влияние приоритетов потоков.

using System;

using System.Threading;

class MyThread { public int Count; public Thread Thrd;

static bool stop = false; static string currentName;

/* Сконструировать новый поток. Обратите внимание на то, что данный конструктор еще не начинает выполнение потоков. */ public MyThread(string name) {

Count = 0;

Thrd = new Thread(this.Run);

Thrd.Name = name; currentName = name;

}

// Начать выполнение нового потока, void Run() {

Console.WriteLine("Поток " + Thrd.Name + " начат."); do {

Count++;

if(currentName != Thrd.Name) { currentName = Thrd.Name;

Console.WriteLine("В потоке " + currentName);

}.

} while(stop == false && Count < 1000000000); stop = true;

Console.WriteLine("Поток " + Thrd.Name + " завершен.");

}

}

class PriorityDemo { static void Main() {

MyThread mtl = new MyThread("с высоким приоритетом"); MyThread mt2 = new MyThread("с низким приоритетом");

// Установить приоритеты для потоков.

mtl.Thrd.Priority = ThreadPriority.AboveNormal;

mt2.Thrd.Priority = ThreadPriority.BelowNormal;

// Начать потоки, mtl.Thrd.Start(); mt2.Thrd.Start() ;

mtl.Thrd.Join (); mt2.Thrd.Join();

Console.WriteLine();

Console.WriteLine("Поток " + mtl.Thrd.Name +

" досчитал до " + mtl.Count);

Console.WriteLine("Поток " + mt2.Thrd.Name +

" досчитал до " + mt2.Count);

}

}

Вот к какому результату может привести выполнение этой программы.

Поток с высоким приоритетом начат.

В потоке с высоким приоритетом Поток с низким приоритетом начат.

В потоке с низким приоритетом В потоке с высоким приоритетом В потоке с низким приоритетом В потоке с высоким приоритетом В потоке с низким приоритетом В потоке с высоким приоритетом В потоке с низким приоритетом В потоке с высоким приоритетом В потоке с низким приоритетом В потоке с высоким приоритетом Поток с высоким приоритетом завершен.

Поток с низким приоритетом завершен.

Поток с высоким приоритетом досчитал до 1000000000 Поток с низким приоритетом досчитал до 23996334

Судя по результату, высокоприоритетный поток получил около 98% всего времени, которое было выделено для выполнения этой программы. Разумеется, конкретный результат может отличаться в зависимости от быстродействия ЦП и числа других задач, решаемых в системе, а также от используемой версии Windows.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «C# 4.0 полное руководство - 2011»

Представляем Вашему вниманию похожие книги на «C# 4.0 полное руководство - 2011» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «C# 4.0 полное руководство - 2011»

Обсуждение, отзывы о книге «C# 4.0 полное руководство - 2011» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x