Izibook.club
Читать онлайн книги!
  • Главная
  • Жанры
  • Авторы
  • ТОП книг
  • ТОП авторов
  • Контакты

Язык программирования C#9 и платформа .NET5

Часть 271 из 642 Информация о книге

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

На некоторых машинах многопоточность по большей части является иллюзией, обеспечиваемой операционной системой. Машины с единственным (не поддерживающим гиперпотоки) центральным процессором не обладают возможностью обработки множества потоков в одно и то же время. Взамен один центральный процессор выполняет по одному потоку за единицу времени (называемую квантом времени), частично основываясь на приоритете потока. По истечении выделенного кванта времени выполнение существующего потока приостанавливается, позволяя выполнять работу другому потоку. Чтобы поток не "забывал", что происходило до того, как его выполнение было приостановлено, ему предоставляется возможность записывать данные в локальное хранилище потоков (Thread Local Storage — TLS) и выделяется отдельный стек вызовов (рис. 14.2).

Язык программирования C#9 и платформа .NET5 - _090.png

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

Взаимодействие с процессами используя платформу .NET Core

Несмотря на то что с процессами и потоками не связано ничего нового, способ взаимодействия с ними в рамках платформы .NET Core значительно изменился (в лучшую сторону). Чтобы подготовить почву для понимания области построения многопоточных сборок (см. главу 15), давайте начнем с выяснения способов взаимодействия с процессами, используя библиотеки базовых классов .NET Core.

В пространстве имен

System.Diagnostics
определено несколько типов, которые позволяют программно взаимодействовать с процессами и разнообразными типами, связанными с диагностикой, такими как журнал событий системы и счетчики производительности. В текущей главе нас интересуют только типы, связанные с процессами, которые описаны в табл. 14.1.

Язык программирования C#9 и платформа .NET5 - _091.png

Класс

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

Язык программирования C#9 и платформа .NET5 - _092.png

Кроме перечисленных выше свойств в классе

System.Diagnostics.Process
определено несколько полезных методов (табл. 14.3).

Язык программирования C#9 и платформа .NET5 - _093.png

Перечисление выполняющихся процессов

Для иллюстрации способа манипулирования объектами

Process
создайте новый проект консольного приложения C# по имени
ProcessManipulator
и определите в классе
Program
следующий вспомогательный статический метод (не забудьте импортировать в файл кода пространства имен
System.Diagnostics
и
System.Linq
):

static void ListAllRunningProcesses()

{

  // Получить все процессы на локальной машине, упорядоченные по PID.

  var runningProcs =

    from proc

    in Process.GetProcesses(".")

    orderby proc.Id

    select proc;

  // Вывести для каждого процесса идентификатор PID и имя.

  foreach(var p in runningProcs)

  {

    string info = $"-> PID: {p.Id}\tName: {p.ProcessName}";

    Console.WriteLine(info);

  }

  Console.WriteLine("************************************\n");

}

Статический метод

Process.GetProcesses()
возвращает массив объектов
Process
, которые представляют выполняющиеся процессы на целевой машине (передаваемая методу строка "
.
" обозначает локальный компьютер). После получения массива объектов
Process
можно обращаться к любым членам, описанным в табл. 14.2 и 14.3. Здесь просто для каждого процесса выводятся идентификатор PID и имя с упорядочением по PID. Модифицируйте операторы верхнего уровня, как показано ниже:

using System;

using System.Diagnostics;

using System.Linq;

Console.WriteLine("***** Fun with Processes *****\n");

ListAllRunningProcesses();

Console.ReadLine();

Запустив приложение, вы увидите список имен и идентификаторов PID для всех процессов на локальной машине. Ниже показана часть вывода (ваш вывод наверняка будет отличаться):

***** Fun with Processes *****

-> PID: 0       Name: Idle

-> PID: 4       Name: System

-> PID: 104     Name: Secure System

-> PID: 176     Name: Registry

Перейти к странице:
Предыдущая страница
Следующая страница
Жанры
  • Военное дело 4
    • Спецслужбы 4
  • Деловая литература 202
    • Банковское дело 3
    • Деловая литература 2
    • Корпоративная культура 13
    • Личные финансы 21
    • Малый бизнес 2
    • Маркетинг, PR, реклама 44
    • О бизнесе популярно 111
    • Отраслевые издания 2
    • Управление, подбор персонала 17
    • Ценные бумаги, инвестиции 3
    • Экономика 28
  • Детективы и триллеры 2752
    • Боевики 313
    • Дамский детективный роман 21
    • Детективы 424
    • Иронические детективы 181
    • Исторические детективы 414
    • Классические детективы 221
    • Криминальные детективы 155
    • Крутой детектив 118
    • Маньяки 15
    • Медицинский триллер 2
    • Политические детективы 44
    • Полицейские детективы 233
    • Прочие Детективы 813
    • Техно триллер 3
    • Триллеры 1194
    • Шпионские детективы 101
  • Детские 491
    • Детская образовательная литература 13
    • Детская проза 163
    • Детские остросюжетные 53
    • Детские приключения 260
    • Детские стихи 21
    • Детский фольклор 1
    • Книга-игра 1
    • Прочая детская литература 76
  • Детские книги 528
    • Детская фантастика 196
    • Детские детективы 3
    • Книги для подростков 23
    • Сказки 262
  • Документальная литература 807
    • Биографии и мемуары 530
    • Военная документалистика 7
    • Искусство и Дизайн 14
    • Критика 11
    • Научпоп 9
    • Прочая документальная литература 73
    • Публицистика 256
  • Дом и Семья 214
    • Домашние животные 14
    • Здоровье и красота 34
    • Кулинария 33
    • Прочее домоводство 8
    • Развлечения 3
    • Сад и Огород 8
    • Сделай сам 2
    • Спорт 9
    • Хобби и ремесла 7
    • Эротика и секс 110
  • Драматургия 109
    • Драма 106
    • Киносценарии 3
    • Мистерия 1
    • Трагедия 1
  • Жанр не определен 8
    • Разное 8
  • Компьютеры и Интернет 15
    • Базы данных 3
    • Интернет 3
    • Программирование 1
    • Программное обеспечение 1
    • Прочая компьютерная литература 10
  • Любовные романы 26552
    • Исторические любовные романы 951
    • Короткие любовные романы 2667
    • Любовно-фантастические романы 11034
    • Остросюжетные любовные романы 980
    • Порно 90
    • Прочие любовные романы 56
    • Слеш 416
    • Современные любовные романы 10969
    • Фемслеш 44
    • Эротика 6542
  • Научно-образовательная 372
    • Альтернативная медицина 5
    • Астрономия и Космос 7
    • Биология 32
    • Биофизика 2
    • Биохимия 2
    • Ботаника 3
    • Военная история 4
    • Геология и география 3
    • Государство и право 1
    • Детская психология 15
    • Зоология 3
    • Иностранные языки 2
    • Культурология 46
    • Литературоведение 20
    • Медицина 35
    • Обществознание 7
    • Педагогика 20
    • Политика 22
    • Прочая научная литература 58
    • Психотерапия и консультирование 50
    • Религиоведение 7
    • Секс и семейная психология 30
    • Технические науки 4
    • Физика 9
    • Философия 34
    • Химия 3
    • Экология 3
    • Юриспруденция 9
    • Языкознание 18
  • Образование 523
    • Бизнес 45
    • Биография и мемуары 46
    • Здоровье 10
    • История 297
    • Карьера 4
    • Психология 230
  • Поэзия и драматургия 42
    • Басни 2
    • Драматургия 11
    • Лирика 2
    • Поэзия 30
  • Приключения 756
    • Вестерны 14
    • Исторические приключения 415
    • Морские приключения 77
    • Природа и животные 31
    • Прочие приключения 212
    • Путешествия и география 52
  • Проза 2402
    • Антисоветская литература 5
    • Афоризмы 1
    • Военная проза 111
    • Историческая проза 321
    • Классическая проза 132
    • Контркультура 13
    • Магический реализм 92
    • Новелла 14
    • Повесть 24
    • Проза прочее 21
    • Рассказ 73
    • Роман 103
    • Русская классическая проза 72
    • Семейный роман/Семейная сага 3
    • Сентиментальная проза 10
    • Советская классическая проза 47
    • Современная проза 1848
    • Эпистолярная проза 2
    • Эпопея 5
    • Эссе, очерк, этюд, набросок 3
  • Прочее 1517
    • Газеты и журналы 5
    • Изобразительное искусство, фотография 12
    • Кино 13
    • Музыка 11
    • Подростковая литература 6
    • Театр 5
    • Фанфик 1470
  • Религия и духовность 361
    • Астрология 1
    • Буддизм 4
    • Православие 1
    • Прочая религиозная литература 4
    • Религия 24
    • Самосовершенствование 136
    • Хиромантия 1
    • Эзотерика 211
    • Язычество 1
  • Справочная литература 42
    • Прочая справочная литература 3
    • Путеводители 10
    • Руководства 12
    • Справочники 15
    • Энциклопедии 9
  • Старинная литература 150
    • Античная литература 1
    • Древневосточная литература 5
    • Мифы. Легенды. Эпос 34
    • Прочая старинная литература 111
  • Техника 2
    • Автомобили и ПДД 1
    • Архитектура 1
  • Фантастика и фентези 28586
    • Альтернативная история 4179
    • Боевая фантастика 5369
    • Героическая фантастика 1486
    • Городское фэнтези 2286
    • Готический роман 13
    • Детективная фантастика 751
    • Ироническая фантастика 102
    • Ироническое фэнтези 83
    • Историческое фэнтези 531
    • Киберпанк 317
    • Космическая фантастика 1812
    • Космоопера 56
    • ЛитРПГ 1331
    • Любовная фантастика 186
    • Любовное фэнтези 115
    • Мистика 518
    • Научная фантастика 928
    • Попаданцы 9486
    • Постапокалипсис 911
    • Сказочная фантастика 26
    • Социально-философская фантастика 543
    • Стимпанк 151
    • Технофэнтези 143
    • Ужасы 103
    • Ужасы и мистика 824
    • Фантастика 254
    • Фантастика: прочее 231
    • Фэнтези 11563
    • Эпическая фантастика 235
    • Юмористическая фантастика 1073
    • Юмористическое фэнтези 1670
  • Фольклор 7
    • Загадки 1
    • Народные сказки 5
    • Фольклор: прочее 2
  • Юмор 194
    • Анекдоты 1
    • Комедии 1
    • Прочий юмор 67
    • Сатира 3
    • Юмористическая проза 123
    • Юмористические стихи 5
Izibook.club

Бесплатная онлайн библиотека для чтения книг без регистрации с телефона или компьютера. У нас собраны последние новинки, мировые бестселлеры книжного мира.

Контакты
  • pereezdsayta@yandex.ru
Информация
  • Карта сайта
© izibook.club, 2026. | Вход
Этот сайт использует cookie для хранения данных. Продолжая пользоваться сайтом, вы даете свое согласие на работу с этими данными в соответствии с нашей политикой конфиденциальности.
Я согласен