Что такое программа?
· Программа представляет собой исполняемый файл, содержащий набор инструкций, написанных для выполнения определенной работы на нашем компьютере, например, notepad.exe.
· Программы не хранятся в основной памяти, они хранятся на диске во вторичной памяти.
Что такое процесс?
· Процесс – это исполняемый экземпляр программы. Например, когда мы дважды щелкаем значок блокнота на нашем компьютере, запускается процесс, который запускает программу блокнота.
· Процесс находится в основной памяти и покидает память при перезагрузке системы.
· Несколько процессов могут относиться к одной программе, поскольку мы можем запускать несколько экземпляров программы блокнота. Каждый экземпляр называется процессом.
Что такое цепочка?
· Поток – наименьшая исполнительная единица процесса.
· Всякий раз, когда процесс создается, система запускает выполнение основного потока.
· Процесс может иметь несколько потоков.
· Процесс того же потока разделяет память процесса.
Почему мы используем цепочки:
· Разделение работы и последующее назначение каждого подразделения единице выполнения (потоку) является естественным подходом к любой проблеме.
· Параллелизм. Потоки — эффективный способ добиться истинного параллелизма. Но нет больше потоков, чем процессор.
· Блокировка ввода-вывода: без потоков блокировка ввода-вывода останавливает весь процесс. Но при многопоточности отдельный поток может блокировать запись ввода-вывода, в то время как другой поток может продвигать прогресс.
· Экономия памяти: способ разделить память, но использовать блоки памяти для выполнения.
· Поток имеет свой собственный набор регистров и стек, в то время как код и глобальные данные используются совместно с другими потоками того же процесса.
Что такое задача?
· В некотором смысле задача напоминает поток или пул потоков.
· Задача – это то, что вы хотите сделать
Разница между потоком и задачей
· Задача — это то, что вы хотите сделать, но поток — один из множества возможных рабочих, выполняющих эту задачу.
· Задача дает нам следующую функцию над потоком:
o Мы создаем несколько задач, используя внутренний пул потоков CLR.
o Задача может возвращать результат, и нет прямого механизма для возврата результата из потока.
o Ожидание набора задач без сигнализации конструкции.
o Мы можем сцепить задачи для выполнения одну за другой.
o Исключение дочерней задачи может распространяться на родительский поток.
o Отмена поддержки задачи.
o Асинхронная реализация проста в задаче, используя ключевые слова async и await.
Что такое асинхронные средства?
· Асинхронные — это альтернативные решения проблемы блокировки ввода-вывода.