Что такое поток в программировании
Перейти к содержимому

Что такое поток в программировании

  • автор:

Потоки и работа с ними

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

Процессы и потоки

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

По умолчанию программа .NET запускается с одним потоком, часто называемым основным потоком. Тем не менее она может создавать дополнительные потоки для выполнения кода параллельно или одновременно с основным потоком. Эти потоки часто называются рабочими потоками.

Цели применения нескольких потоков

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

Представьте себе классическое приложение, в котором основной поток отвечает за элементы пользовательского интерфейса и реагирует на действия пользователя. Используйте рабочие потоки для выполнения длительных операций, которые, в противном случае будут занимать основной поток, в результате чего пользовательский интерфейс будет недоступен. Для более оперативной реакции на входящие сообщения или события также можно использовать выделенный поток связи с сетью или устройством.

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

Как использовать многопоточность в .NET

Начиная с .NET Framework 4, для многопоточности рекомендуется использовать библиотеку параллельных задач (TPL) и Parallel LINQ (PLINQ). Дополнительные сведения см. в разделе Параллельное программирование.

Библиотека параллельных задач и PLINQ полагаются на потоки ThreadPool. Класс System.Threading.ThreadPool предоставляет приложения .NET с пулом рабочих потоков. Также можно использовать потоки из пула потоков. Дополнительные сведения см. в разделе Управляемый пул потоков.

Наконец, можно использовать класс System.Threading.Thread, который представляет управляемый поток. Дополнительные сведения см. в разделе Использование потоков и работа с потоками.

Несколько потоков могут требовать доступ к общему ресурсу. Чтобы сохранить ресурс в непроверенном состоянии и избежать условий гонки, необходимо синхронизировать доступ к потоку к нему. Вы также можете координировать взаимодействие нескольких потоков. Платформа .NET предоставляет ряд типов для синхронизации доступа к общему ресурсу или координации взаимодействия потоков. Дополнительные сведения см. в разделе Обзор примитивов синхронизации.

Исключения следует обрабатывать в потоках. Необработанные исключения в потоках, как правило, приводят к завершению процесса. Дополнительные сведения см. в статье Исключения в управляемых потоках.

См. также

  • Объекты и функциональные возможности работы с потоками
  • Рекомендации по работе с потоками
  • Процессы и потоки
  • Параллельная обработка в .NET
  • Асинхронные шаблоны программирования в .NET

Совместная работа с нами на GitHub

Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.

Поток данных

Поток данных (англ. stream ) в программировании — абстракция, используемая для чтения или записи файлов, сокетов и т. п. в единой манере.

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

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

При запуске процесса ему предоставляются предопределённые стандартные потоки.

Возможность перенаправления потоков позволяет связывать различные программы, и придаёт системе гибкость, являющуюся частью философии Unix.

Поток данных в программировании

Абстракция потока особенно важна в языке программирования Си, где он представляет собой источник ввода и/или вывода данных, обычно байтов, связанный с файлом, устройством, либо другим процессом. Работа с потоками перенесена во многие другие языки:

  • C++: iostream из стандартной библиотеки C++.
  • Языки платформы .NET Framework (например, C#): Base Class Library, пространство имен System.IO.

Поток данных в операционных системах

Пример цепи процессов общающихся с помощью потоков данных.

Командная оболочка UNIX интенсивно использует абстракцию потока для совместного выполнения нескольких утилит.

Примечания

См. также

  • Стандартные потоки
  • Враппер
  • Именованный канал
  • Битовый поток
Это заготовка статьи о компьютерах. Вы можете помочь проекту, исправив и дополнив её.
Это примечание по возможности следует заменить более точным.

Логический • Низший тип • Коллекция • Перечисляемый тип • Исключение • First-class function • Opaque data type • Recursive data type • Семафор • Поток • Высший тип • Type class • Unit type • Void

Абстрактный тип данных • Структура данных • Интерфейс • Kind (type theory) • Примитивный тип • Subtyping • Шаблоны C++ • Конструктор типа • Parametric polymorphism

  • Структуры данных
  • UNIX

Wikimedia Foundation . 2010 .

  • Поток (студенческий)
  • Поток сознания (За гранью возможного)

Полезное

Смотреть что такое «Поток данных» в других словарях:

  • поток данных — — [http://www.iks media.ru/glossary/index.html?glossid=2400324] Тематики электросвязь, основные понятия EN data stream … Справочник технического переводчика
  • поток данных в физическом канале — На восходящей линии поток данных, который передается по одному физическому каналу. На нисходящей линии поток данных, передаваемый по одному физическому каналу в каждой соте активной группы сот. (МСЭ Т Q.1741). [http://www.iks… … Справочник технического переводчика
  • поток данных (цифрового телевизионного сигнала) — Последовательность битов, составляющих цифровой телевизионный сигнал, передаваемая с заданной скоростью по электромагнитным системам. [ГОСТ Р 52210 2004] Тематики телевидение, радиовещание, видео Обобщающие термины цифровые сигналы и потоки, их… … Справочник технического переводчика
  • поток данных в каналах связи — [Интент] Тематики электросвязь, основные понятия EN data flow on communication channels … Справочник технического переводчика
  • поток данных различного формата — — [Л.Г.Суменко. Англо русский словарь по информационным технологиям. М.: ГП ЦНИИС, 2003.] Тематики информационные технологии в целом EN media stream … Справочник технического переводчика
  • поток данных через границу государства — — [http://www.iks media.ru/glossary/index.html?glossid=2400324] Тематики электросвязь, основные понятия EN transborder dataflow … Справочник технического переводчика
  • поток данных (цифрового телевизионного сигнала) — 37 поток данных (цифрового телевизионного сигнала): Последовательность битов, составляющих цифровой телевизионный сигнал, передаваемая с заданной скоростью по электромагнитным системам. Источник: ГОСТ Р 52210 2004: Телевидение вещательное… … Словарь-справочник терминов нормативно-технической документации
  • программный поток данных (цифрового вещательного телевидения) — 39 программный поток данных (цифрового вещательного телевидения): Поток данных, образованный путем мультиплексирования элементарных потоков видеоданных и звукоданных цифрового вещательного телевидения, имеющих одну общую тактовую частоту, и… … Словарь-справочник терминов нормативно-технической документации
  • программный поток данных — Поток данных, образованный путем мультиплексирования элементарных потоков видеоданных и звукоданных цифрового вещательного телевидения, имеющих одну общую тактовую частоту, и сформированный из программных пакетов вещательного телевидения… … Справочник технического переводчика
  • программный поток данных (цифрового вещательного телевидения) — Поток данных, образованный путем мультиплексирования элементарных потоков видеоданных и звукоданных цифрового вещательного телевидения, имеющих одну общую тактовую частоту, и сформированный из программных пакетов вещательного телевидения… … Справочник технического переводчика
  • Обратная связь: Техподдержка, Реклама на сайте
  • �� Путешествия

Экспорт словарей на сайты, сделанные на PHP,
WordPress, MODx.

  • Пометить текст и поделитьсяИскать в этом же словареИскать синонимы
  • Искать во всех словарях
  • Искать в переводах
  • Искать в ИнтернетеИскать в этой же категории

Поток (программирование)

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

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

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

При запуске процесса ему предоставляются предопределённые стандартные потоки.

Возможность перенаправления потоков позволяет связывать различные программы, и придаёт системе гибкость, являющуюся частью философии Unix.

Поток данных в программировании

Абстракция потока особенно важна в языке программирования Си, где он представляет из себя источник ввода и/или вывода данных, обычно байтов, связанный с файлом, устройством либо другим процессом. Работа с потоками перенесена во многие другие языки.

Поток данных в операционных системах

Командная оболочка UNIX интенсивно использует абстракцию потока для совместного выполнения нескольких утилит.

См. также

* Стандартные потоки
* Враппер

Wikimedia Foundation . 2010 .

  • Сагырбаев, Курмангазы
  • Лённрот, Элиас

Смотреть что такое «Поток (программирование)» в других словарях:

  • Поток выполнения — Для термина «Поток» см. другие значения. Процесс с двумя потоками выполнения на одном процессоре Поток выполнения (анг … Википедия
  • Поток минимальной стоимости — Задача о потоке минимальной стоимости состоит в нахождении самого дешёвого способа передачи определённого количества потока через транспортную сеть. Содержание 1 Определения 2 Отношение к другим задачам … Википедия
  • Поток POSIX — POSIX Threads стандарт потоков (нитей) выполнения, определяющий API для создания и управления ими. Библиотеки, реализующие этот стандарт (и функции этого стандарта), обычно называются Pthreads (функции имеют приставку «pthread »). Хотя наиболее… … Википедия
  • Линейное программирование — Линейное программирование математическая дисциплина, посвящённая теории и методам решения экстремальных задач на множествах мерного векторного пространства, задаваемых системами линейных уравнений и неравенств. Линейное программирование… … Википедия
  • Класс (программирование) — У этого термина существуют и другие значения, см. Класс. Класс в программировании набор методов и функций. Другие абстрактные типы данных метаклассы, интерфейсы, структуры, перечисления характеризуются какими то своими, другими… … Википедия
  • Объектно-ориентированное программирование — Эта статья во многом или полностью опирается на неавторитетные источники. Информация из таких источников не соответствует требованию проверяемости представленной информации, и такие ссылки не показывают значимость темы статьи. Статью можно… … Википедия
  • Событийно-ориентированное программирование — Парадигмы программирования Агентно ориентированная Компонентно ориентированная Конкатенативная Декларативная (контрастирует с Императивной) Ограничениями Функциональная Потоком данных Таблично ориентированная (электронные таблицы) Реактивная … Википедия
  • Реактивное программирование — Парадигмы программирования Агентно ориентированная Компонентно ориентированная Конкатенативная Декларативная (контрастирует с Императивной) Ограничениями Функциональная Потоком данных Таблично ориентированная (электронные таблицы) Реактивная … Википедия
  • Грамотное программирование — Стиль этой статьи неэнциклопедичен или нарушает нормы русского языка. Статью следует исправить согласно стилистическим правилам Википедии … Википедия
  • Парное программирование — техника программирования, при которой весь исходный код создаётся парами людей, программирующих одну задачу, сидя за одним рабочим местом. Один программист управляет компьютером и, в основном, думает над кодированием в деталях. Другой программист … Википедия

Потоки данных

В Java для описания работы по вводу/выводу используется специальное понятие – поток данных (stream). Поток данных связан с некоторым источником или приемником данных, способных получать или предоставлять информацию. Соответственно, потоки делятся на входные — читающие данные, и на выходные — передающие (записывающие) данные.

Потоки данных фото

Потоки данных — это упорядоченные последовательности данных, которым соответствует определенный источник (source) (для потоков ввода) или получатель (destination) (для потоков вывода). В Java потоки ввода вывода реализуются в пределах иерархии классов, Определенных в пакете jаvа.io. Классы ввода вывода Java исключают необходимость вникать в особенности низкоуровневой организации операционных систем и предоставляют доступ к системным ресурсам посредством методов работы с файлами и иных инструментов.

Все потоки ввода вывода ведут себя одинаково, несмотря на отличия в конкретных физических устройствах, с которыми они связаны. Одни и те же классы и методы ввода вывода применимы к разнотипным устройствам. Абстракция потока ввода может охватывать разные типы ввода: из файла на диске, клавиатуры или сетевого соединения.

2. Типы потоков данных

В JAVA существует 2 типа потоков данных:

  • Символьные потоки (text-streams, последовательности 16-битовых символов Unicode), содержащие символы.Символьные потоки фото
  • Байтовые потоки (binary-streams), содержащие восьми битную информацию.Байтовые потоки фото

Классы разделяются также по направлению потоков:

  • Потоки ввода (input)
  • Потоки вывода (output)

В Java определены четыре основных абстрактных классов для работы с потоками:

Основные абстрактные классы потоков данных фото

3. Общая схема работы с потоками в Java

Общая схема работы с потоками в Java описывается тремя простыми шагами:

  1. Создать потоковый объект и ассоциировать его с файлом на диске.
  2. Пока есть информация, читать/писать очередные данные в/из потока.
  3. Закрыть поток.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *