Что такое программа?

· Программа представляет собой исполняемый файл, содержащий набор инструкций, написанных для выполнения определенной работы на нашем компьютере, например, notepad.exe.

· Программы не хранятся в основной памяти, они хранятся на диске во вторичной памяти.

Что такое процесс?

· Процесс – это исполняемый экземпляр программы. Например, когда мы дважды щелкаем значок блокнота на нашем компьютере, запускается процесс, который запускает программу блокнота.

· Процесс находится в основной памяти и покидает память при перезагрузке системы.

· Несколько процессов могут относиться к одной программе, поскольку мы можем запускать несколько экземпляров программы блокнота. Каждый экземпляр называется процессом.

Что такое цепочка?

· Поток – наименьшая исполнительная единица процесса.

· Всякий раз, когда процесс создается, система запускает выполнение основного потока.

· Процесс может иметь несколько потоков.

· Процесс того же потока разделяет память процесса.

Почему мы используем цепочки:

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

· Параллелизм. Потоки — эффективный способ добиться истинного параллелизма. Но нет больше потоков, чем процессор.

· Блокировка ввода-вывода: без потоков блокировка ввода-вывода останавливает весь процесс. Но при многопоточности отдельный поток может блокировать запись ввода-вывода, в то время как другой поток может продвигать прогресс.

· Экономия памяти: способ разделить память, но использовать блоки памяти для выполнения.

· Поток имеет свой собственный набор регистров и стек, в то время как код и глобальные данные используются совместно с другими потоками того же процесса.

Что такое задача?

· В некотором смысле задача напоминает поток или пул потоков.

· Задача – это то, что вы хотите сделать

Разница между потоком и задачей

· Задача — это то, что вы хотите сделать, но поток — один из множества возможных рабочих, выполняющих эту задачу.

· Задача дает нам следующую функцию над потоком:

o Мы создаем несколько задач, используя внутренний пул потоков CLR.

o Задача может возвращать результат, и нет прямого механизма для возврата результата из потока.

o Ожидание набора задач без сигнализации конструкции.

o Мы можем сцепить задачи для выполнения одну за другой.

o Исключение дочерней задачи может распространяться на родительский поток.

o Отмена поддержки задачи.

o Асинхронная реализация проста в задаче, используя ключевые слова async и await.

Что такое асинхронные средства?

· Асинхронные — это альтернативные решения проблемы блокировки ввода-вывода.