18.Многопоточные приложения
Предмет исследований
Преимущества многопоточности.
Реализация многопоточности.
Применение в программах.
Контрольные вопросы
Типы многопоточности в программах.
Создание дополнительных потоков в программах.
Обмен данными между потоками.
Применение делегатов при создание многопоточных приложений в C#/
Преимущества многопоточных приложений на современных ПК.
Использование метода "Thread.Sleep".
Задание. Напишите программу реализующую создание второго потока при ее запуске и обмен данными между потоками.
Пример. В примере показана программ в которой из основного потока создается еще один поток. Второй поток исполняется до того момента пока в первом переменной str не будет присвоено значение x. После этого глобальная переменная stopThread примет значение true и цикл во втором потоке завершится, что привет к завершения работы самого потока. В данном примере представлен обмен данными между потоками с помощью глобальных переменных.
Листинг программы
using System;
using System.Threading;
namespace LabTh
{
class Program
{
static bool stopThread;
public static void MyThread()
{
for (int i = 0; ; i++)
{
if (stopThread)
break;
Console.WriteLine("MyThread: {0}", i);
Thread.Sleep(2000);
}
Console.WriteLine("Поток MyThread остановлен");
}
[STAThread]
static void Main(string[] args)
{
ThreadStart myThreadDelegate = new ThreadStart(MyThread);
Thread thr = new Thread(myThreadDelegate);
Console.WriteLine("Запуск потока MyThread");
stopThread = false;
thr.Start();
string str;
do
{
Console.WriteLine("Команда (х -- выход): ");
str = Console.ReadLine();
Console.WriteLine("основной поток: {0}", str);
}
while (str != "x");
stopThread = true;
Console.ReadLine();
}
}
}
При работе программы видно, что при присвоении заданной переменной значения "x" происходит прекращение работы потока.
- 1.Иср Visual c#. Первые программы
- 1.1.Основы иср
- 2.Численные типы в языке c#
- 3.Строковые и символьные типы в языке c#
- 3.1.Взаимные преобразования
- 3.2.Стандартное форматирование
- 3.3.Нестандартное форматирование
- 4.Тип DateTime в языке c#
- 4.1.Консольное приложение
- 4.2.Windows Forms приложение
- 5.Линейные структуры
- 6.Ветвления
- 6.1.Ветвление if; else
- 6.2.Выбор switch; case
- 7.Циклы с неизвестным числом повторений
- 7.1.Цикл while
- 7.2.Цикл do…while
- 8.Циклы с заданным числом повторений
- 8.1.Команда Goto и метки
- 8.2.Цикл for
- 8.3.Вложенные циклы for
- 8.4.Команда break
- 8.5.Команда continue
- 9.Логические операции
- 10.Массивы
- 10.1.Одномерный массив
- 10.2.Матрица
- 11.Файлы
- 12.Подпрограммы
- 13.Операции со строками
- 13.1.Сравнение строк
- 13.2.Объединение строк
- 13.3.Разбиение строк
- 14.Исключения
- 14.1.Операции с вещественными числами
- 14.2.Операции с целыми числами
- 15.Работы с классами и объектами
- 16.Использование командной строки при запуске программ
- 17.Отладка и тестирование в с#
- 18.Многопоточные приложения
- 19.Работа с папками
- 20.Многооконные приложения
- 21.Компонент ProgressBar
- 22.Списки
- 23.Таблицы
- 24.Графика. Рисуем функции
- 24.1.Текст и график функции в форме
- 24.2.Компонент Chart
- 25.Графика, рисование фигур
- 26.Графика, растровые изображения
- 27.Графика, анимация
- 28.Приложения
- 28.1.Класс System.Math
- 28.2.Класс System.Console
- 28.3.Класс System.String