Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Межпроцессорное взаимодействие и многопоточность в .NET (реферат).docx
Скачиваний:
30
Добавлен:
28.06.2014
Размер:
139.35 Кб
Скачать
  1. Interrupt(), Sleep(), SpinWait(), Join()

using System;

using System.Threading;

class ThreadInterrupt

{

static void Main()

{

StayAwake stayAwake = new StayAwake();

Thread newThread =

new Thread(new ThreadStart(stayAwake.ThreadMethod));

newThread.Start();

//Следующая строка сгенерит исключение в ThreadMethod

//если newThread блокирован или будет блокирован в будущем

newThread.Interrupt();

Console.WriteLine("Main thread calls Interrupt on newThread.");

//Говорим newThread спать

stayAwake.SleepSwitch = true;

//Ждем завершения newThread

newThread.Join();

}

}

class StayAwake

{

bool sleepSwitch = false;

public bool SleepSwitch

{

set { sleepSwitch = value; }

}

public StayAwake() { }

public void ThreadMethod()

{

Console.WriteLine("newThread is executing ThreadMethod.");

while (!sleepSwitch)

{

//Используем SpinWait для демонстрации эффекта

//вызова Interrupt в запущенном потоке

Thread.SpinWait(10000000);

}

try

{

Console.WriteLine("newThread going to sleep.");

//Когда newThread входит в слип, генерится исключение

// ThreadInterruptedException

Thread.Sleep(Timeout.Infinite);

}

catch (ThreadInterruptedException e)

{

Console.WriteLine("newThread cannot go to sleep - " +

"interrupted by main thread.");

}

}

}

Выходная информация:

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

Класс Process Общая информация.

Описание:

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

(Process как объект ядра подробно описан в [8])

Иерархия:

System.Object    System.MarshalByRefObject      System.ComponentModel.Component       System.Diagnostics.Process

Определение:

[C#]

public Process ()

Потокобезопасность:

Этот тип можно использовать в многопоточных операциях.

Process – составляющие Свойства

 

Name

Description

BasePriority

Приоритет процесса

ExitCode

Устанавливается по завершению процесса

ExitTime

Время завершения процесса

Handle

Возвращает дескриптор процесса

HandleCount

Число дескрипторов открытых процессом

Id

Уникальный id процесса

MachineName

Имя ЭВМ

MainModule

Главный модуль процесса

Modules

Набор модулей запущенных в рамках данного процесса

PriorityClass

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

ProcessName

Имя процесса

StartTime

Время начала работы данного процесса

Threads

Коллекция потока данного процесса

Методы

 

Name

Description

GetCurrentProcess

Получить текущий процесс

GetProcesses

Получает набор процессов запущенных на текущей машине

GetProcessesByName

Получает набор процессов запущенных на соответствующей ЭВМ

Kill

Останавливает процесс

Start

Начать выполнение процесса