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

Тут можно читать онлайн Герберт Шилдт - C# 4.0: полное руководство - бесплатно ознакомительный отрывок. Жанр: comp-programming, издательство ООО И.Д. Вильямс, год 2011. Здесь Вы можете читать ознакомительный отрывок из книги онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    C# 4.0: полное руководство
  • Автор:
  • Жанр:
  • Издательство:
    ООО И.Д. Вильямс
  • Год:
    2011
  • Город:
    Москва -- Киев
  • ISBN:
    978-5-8459-1684-6
  • Рейтинг:
    3.93/5. Голосов: 141
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

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

C# 4.0: полное руководство - описание и краткое содержание, автор Герберт Шилдт, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

В этом полном руководстве по C# 4.0 - языку программирования, разработанному специально для среды .NET, - детально рассмотрены все основные средства языка: типы данных, операторы, управляющие операторы, классы, интерфейсы, методы, делегаты, индексаторы, события, указатели, обобщения, коллекции, основные библиотеки классов, средства многопоточного программирования и директивы препроцессора. Подробно описаны новые возможности C#, в том числе PLINQ, библиотека TPL, динамический тип данных, а также именованные и необязательные аргументы. Это справочное пособие снабжено массой полезных советов авторитетного автора и сотнями примеров программ с комментариями, благодаря которым они становятся понятными любому читателю независимо от уровня его подготовки.


Книга рассчитана на широкий круг читателей, интересующихся программированием на C#.Введите сюда краткую аннотацию

C# 4.0: полное руководство - читать онлайн бесплатно ознакомительный отрывок

C# 4.0: полное руководство - читать книгу онлайн бесплатно (ознакомительный отрывок), автор Герберт Шилдт
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

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

// Создать поток исполнения.

using System;

using System.Threading;

class MyThread {

public int Count;

string thrdName;

public MyThread(string name) {

Count = 0;

thrdName = name;

}

// Точка входа в поток,

public void Run() {

Console.WriteLine(thrdName + " начат.");

do {

Thread.Sleep(500);

Console.WriteLine("В потоке " + thrdName + ", Count = " + Count);

Count++;

} while (Count < 10);

Console.WriteLine(thrdName + " завершен.");

}

}

class MultiThread {

static void Main() {

Console.WriteLine("Основной поток начат.");

// Сначала сконструировать объект типа MyThread.

MyThread mt = new MyThread("Потомок #1");

// Далее сконструировать поток из этого объекта.

Thread newThrd = new Thread(mt.Run);

// И наконец, начать выполнение потока.

newThrd.Start();

do {

Console.Write(".");

Thread.Sleep(100);

} while (mt.Count != 10);

Console.WriteLine("Основной поток завершен.");

}

}

Рассмотрим приведенную выше программу более подробно. В самом ее начале определяется класс MyThread, предназначенный для создания второго потока исполнения. В методе Run()этого класса организуется цикл для подсчета от 0 до 9. Обратите внимание на вызов статического метода Sleep(), определенного в классе Thread. Этот метод обусловливает приостановление того потока, из которого он был вызван, на определенный период времени, указываемый в миллисекундах. Когда приостанавливается один поток, может выполняться другой. В данной программе используется следующая форма метода Sleep():

public static void Sleep(int миллисекунд_простоя)

где миллисекунд_простоя обозначает период времени, на который приостанавливается выполнение потока. Если указанное количество миллисекунд_простоя равно нулю, то вызывающий поток приостанавливается лишь для того, чтобы предоставить возможность для выполнения потока, ожидающего своей очереди.

В методе Main()новый объект типа Threadсоздается с помощью приведенной ниже последовательности операторов.

// Сначала сконструировать объект типа MyThread.

MyThread mt = new MyThread("Потомок #1");

// Далее сконструировать поток из этого объекта.

Thread newThrd = new Thread(mt.Run);

// И наконец, начать выполнение потока.

newThrd.Start();

Как следует из комментариев к приведенному выше фрагменту кода, сначала создается объект типа MyThread. Затем этот объект используется для создания объекта типа Thread, для чего конструктору этого объекта в качестве точки входа передается метод mt.Run(). И наконец, выполнение потока начинается с вызова метода Start().

Благодаря этому метод mt.Run()выполняется в своем собственном потоке. После вызова метода Start()выполнение основного потока возвращается к методу Main(), где начинается цикл do-while. Оба потока продолжают выполняться, совместно используя ЦП, вплоть до окончания цикла. Ниже приведен результат выполнения данной программы. (Он может отличаться в зависимости от среды выполнения, операционной системы и степени загрузки задач.)

Основной поток начат.

Потомок #1 начат.

....Потомок #1 Count = 0

....Потомок #1 Count = 1

....Потомок #1 Count = 2

....Потомок #1 Count = 3

....Потомок #1 Count = 4

....Потомок #1 Count = 5

....Потомок #1 Count = 6

....Потомок #1 Count = 7

....Потомок #1 Count = 8

....Потомок #1 Count = 9

Потомок #1 завершен.

Основной поток завершен.

Зачастую в многопоточной программе требуется, чтобы основной поток был последним потоком, завершающим ее выполнение. Формально программа продолжает выполняться до тех пор, пока не завершатся все ее приоритетные потоки. Поэтому требовать, чтобы основной поток завершал выполнение программы, совсем не обязательно. Тем не менее этого правила принято придерживаться в многопоточном программировании, поскольку оно явно определяет конечную точку программы. В рассмотренной выше программе предпринята попытка сделать основной поток завершающим ее выполнение. Для этой цели значение переменной Countпроверяется в цикле do-whileвнутри метода Main(), и как только это значение оказывается равным 10, цикл завершается и происходит поочередный возврат из методов Sleep(). Но такой подход далек от совершенства, поэтому далее в этой главе будут представлены более совершенные способы организации ожидания одного потока до завершения другого.

Простые способы усовершенствования многопоточной программы

Рассмотренная выше программа вполне работоспособна, но ее можно сделать более эффективной, внеся ряд простых усовершенствований, во-первых, можно сделать так, чтобы выполнение потока начиналось сразу же после его создания. Для этого достаточно получить экземпляр объекта типа Threadв конструкторе класса MyThread. И во-вторых, в классе MyThreadсовсем не обязательно хранить имя потока, поскольку для этой цели в классе Threadспециально определено свойство Name.

public string Name { get; set; }

Свойство Nameдоступно для записи и чтения и поэтому может служить как для запоминания, так и для считывания имени потока.

Ниже приведена версия предыдущей программы, в которую внесены упомянутые выше усовершенствования.

// Другой способ запуска потока.

using System;

using System.Threading;

class MyThread {

public int Count;

public Thread Thrd;

public MyThread(string name) {

Count = 0;

Thrd = new Thread(this.Run);

Thrd.Name = name; // задать имя потока

Thrd.Start(); // начать поток

}

// Точка входа в поток,

void Run() {

Console.WriteLine(Thrd.Name + " начат.");

do {

Thread.Sleep(500);

Console.WriteLine("В потоке " + Thrd.Name + ", Count = " + Count);

Count++;

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

Интервал:

Закладка:

Сделать


Герберт Шилдт читать все книги автора по порядку

Герберт Шилдт - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




C# 4.0: полное руководство отзывы


Отзывы читателей о книге C# 4.0: полное руководство, автор: Герберт Шилдт. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x