Поток (программирование)
Поток ( _en. stream) — абстрактная последовательность инструкций или данных вообще, привязанная к соответствующему дескриптору (может быть представлен именем потока).
Потоки являются удобным унифицированным программным интерфейсом для чтения или записи файлов (в том числе специальных, в частности связанных с устройством), сокетов и передачи данных между процессами.
Поддержка потоков включена в большинство языков программирования и едва ли не во все современные (на 2008 год) операционные системы.
При запуске процесса ему предоставляются предопределённые стандартные потоки.
Возможность перенаправления потоков позволяет связывать различные программы, и придаёт системе гибкость, являющуюся частью философии Unix.
Поток данных в программировании
Абстракция потока особенно важна в языке программирования Си, где он представляет из себя источник ввода и/или вывода данных, обычно байтов, связанный с файлом, устройством либо другим процессом. Работа с потоками перенесена во многие другие языки.
Поток данных в операционных системах
Командная оболочка UNIX интенсивно использует абстракцию потока для совместного выполнения нескольких утилит.
См. также
* Стандартные потоки
* Враппер
Wikimedia Foundation . 2010 .
- Сагырбаев, Курмангазы
- Лённрот, Элиас
Смотреть что такое «Поток (программирование)» в других словарях:
- Поток выполнения — Для термина «Поток» см. другие значения. Процесс с двумя потоками выполнения на одном процессоре Поток выполнения (анг … Википедия
- Поток минимальной стоимости — Задача о потоке минимальной стоимости состоит в нахождении самого дешёвого способа передачи определённого количества потока через транспортную сеть. Содержание 1 Определения 2 Отношение к другим задачам … Википедия
- Поток POSIX — POSIX Threads стандарт потоков (нитей) выполнения, определяющий API для создания и управления ими. Библиотеки, реализующие этот стандарт (и функции этого стандарта), обычно называются Pthreads (функции имеют приставку «pthread »). Хотя наиболее… … Википедия
- Линейное программирование — Линейное программирование математическая дисциплина, посвящённая теории и методам решения экстремальных задач на множествах мерного векторного пространства, задаваемых системами линейных уравнений и неравенств. Линейное программирование… … Википедия
- Класс (программирование) — У этого термина существуют и другие значения, см. Класс. Класс в программировании набор методов и функций. Другие абстрактные типы данных метаклассы, интерфейсы, структуры, перечисления характеризуются какими то своими, другими… … Википедия
- Объектно-ориентированное программирование — Эта статья во многом или полностью опирается на неавторитетные источники. Информация из таких источников не соответствует требованию проверяемости представленной информации, и такие ссылки не показывают значимость темы статьи. Статью можно… … Википедия
- Событийно-ориентированное программирование — Парадигмы программирования Агентно ориентированная Компонентно ориентированная Конкатенативная Декларативная (контрастирует с Императивной) Ограничениями Функциональная Потоком данных Таблично ориентированная (электронные таблицы) Реактивная … Википедия
- Реактивное программирование — Парадигмы программирования Агентно ориентированная Компонентно ориентированная Конкатенативная Декларативная (контрастирует с Императивной) Ограничениями Функциональная Потоком данных Таблично ориентированная (электронные таблицы) Реактивная … Википедия
- Грамотное программирование — Стиль этой статьи неэнциклопедичен или нарушает нормы русского языка. Статью следует исправить согласно стилистическим правилам Википедии … Википедия
- Парное программирование — техника программирования, при которой весь исходный код создаётся парами людей, программирующих одну задачу, сидя за одним рабочим местом. Один программист управляет компьютером и, в основном, думает над кодированием в деталях. Другой программист … Википедия
Процессы и потоки
Приложение состоит из одного или нескольких процессов. Процесс, в простейших терминах, — это выполняющаяся программа. Один или несколько потоков выполняются в контексте процесса. Поток — это базовая единица, которой операционная система выделяет процессорное время. Поток может выполнять любую часть кода процесса, включая те части, которые в настоящее время выполняются другим потоком.
Объект задания позволяет управлять группами процессов как единое целое. Объекты заданий — это именуемые, защищаемые, общие объекты, управляющие атрибутами связанных с ними процессов. Операции, выполняемые с объектом задания, влияют на все процессы, связанные с объектом задания.
Пул потоков — это коллекция рабочих потоков, которые эффективно выполняют асинхронные обратные вызовы от имени приложения. Пул потоков в основном используется для уменьшения количества потоков приложения и обеспечения управления рабочими потоками.
Волокно — это единица выполнения, которую приложение должно запланировать вручную. Волокна выполняются в контексте потоков, которые планируют их.
Планирование в пользовательском режиме (UMS) — это упрощенный механизм, который приложения могут использовать для планирования собственных потоков. Потоки UMS отличаются от волокон тем, что каждый поток UMS имеет собственный контекст потока вместо совместного использования контекста потока одного потока.
- Новые возможности процессов и потоков
- Процессы и потоки
- Использование процессов и потоков
- Справочник по процессам и потокам
Поток данных
Поток данных (англ. 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.
- Пометить текст и поделитьсяИскать в этом же словареИскать синонимы
- Искать во всех словарях
- Искать в переводах
- Искать в ИнтернетеИскать в этой же категории
Потоки информации: особенности и разновидности
Программирование предусматривает работу с огромным количеством данных. Чтобы создать приложение, нужно выбрать язык программирования, а также научиться использовать его инструменты и возможности.
Огромную роль для любой системы и программы играют потоки. Им и будет посвящена статья. Предстоит рассмотреть примеры на базе JavaScript, а также в языке программирования C++.
Определение
Поток данных в глобальном смысле – это передача и принятие той или иной информации. В программировании существует иное определение. Потоком данных называется абстракция, которая используется для чтения и записи файлов, советов и им подобным компонентам в единой манере.
Это – удобный унифицированный программный интерфейс, предназначенный для передачи электронный материалов между процессами на устройстве. Поток данных помогает определить архитектурное устройство всей имеющейся системы. Без него невозможно представить функционирование оборудования.
Потоки (данных и не только) – последовательность инструкций, выполняемых параллельно с другими потоками. Каждая программа создает минимум одну такую «направленность».
Виды
Существуют различные виды потоков. Классификация может быть по типу движения данных:
- вводные – информация поступает в приложение, после чего происходит ее считывание;
- выводные – программа передает данные с последующей записью в потоки.
Также есть разделение по типу используемых данных. Не всегда приложения работают непосредственно с байтами – в языках разработки, включая Java и C++, может использоваться текстовая информация. На основании этого выделяются следующие виды потоков:
Также в разработке ПО различают следующие типы потоков данных:
- C++. Здесь работа осуществляется вместе со стандартной библиотекой языка. А именно – при помощи iostream.
- Пространство имен System.IO. Этот вариант актуален для всех языков платформы NET.Framework.
- Пакет java.io. Такая реализация поддерживается на платформе Java.
В современных операционных системах абстракции потоков данных поддерживаются для того, чтобы обеспечивать совместное выполнение нескольких утилит.
Способ организации
Поток определяет способ организации работы с электронными материалами в системе или приложении. В данном смысле существует иная классификация. Она включает в себя множество вариантов, но ключевыми в JavaScript и C++ являются такие методы:
- однонаправленный;
- двунаправленный (или многопоточный).
Каждый предусматривает свои ключевые нюансы и особенности. В современных компьютерах почти всегда используется так называемая многопоточность или асинхронность.
Однонаправленный вариант
Так называется поток, который определяет всего одну задачу в каждой части приложения – она может или получить данные, или передать. Его направление не будет меняться. Оно функционирует всегда по одному и тому же принципу.
Однонаправленные потоки данных в реальной жизни имеют простой пример-интерпретацию – водопровод. Модуль здесь будет выступать частью трубы:
Здесь сведения будут переходить от одного модуля к другому. Выходные сведения предыдущего становятся входными для последующего «блока».
Выше – пример того, как на практике выглядит соответствующая картина.
Приложения, использующие однопотоковую концепцию, не выделяются быстродействием. Они практически не встречаются в современном оборудовании.
Двунаправленный вариант
Двунаправленным называется поток, в котором материалы могут передаваться частями программы в обе стороны.
Этот вариант чаще всего используется для связи модели и представления. Когда обновление (пример – текст в поле ввода) сразу корректирует остальные сведения в заданной модели – это и есть двунаправленная связь.
При использовании такого типа связи исходный код получается меньше. В JavaScript существуют специальные фреймворки, позволяющие максимально автоматизировать соответствующие процессы. Но двунаправленную связь тяжелее отлаживать.
Асинхронность
Видов потоков данных много – классифицировать их удается по разным характеристикам. Если кто-нибудь попросит «Назовите основные типы потоков», проблем с этим не будет. В плане обработки электронных материалов в операционных системах и разработке ПО преобладает асинхронность.
Это – многопоточность. В JS она изначально не предусмотрена. Добиться асинхронности можно при помощи специальных методов, классов, операций и движков. Асинхронность определяет следующий алгоритм работы:
- Две строчки кода идут друг за другом. Первая требует определенного времени на обработку.
- Первая строка в фоновом режиме начинает проходить обработку.
- В этот момент производится чтение и запуск второй строки. Операции реализовываются одновременно, без ожидания завершения первой операции.
Если для обработки второй строки кода требуется завершение ранее начатой операции, целесообразно говорить об однопотоковых приложениях.
В JavaScript
JavaScript – язык программирования, который умеет обрабатывать только один поток данных. Задача асинхронности здесь решена при помощи специального инструмента – Worker.
Он подходит для:
- обработки сложных операций, которые могут выполняться без блокировки работы пользователя;
- внесение корректировок в отдельные файлы-модули;
- создание для каждого сформированного модуля объекта Worker, используемого для коммуникации.
WebWorker помогает избежать перегрузки интернет-обозревателя, а также принудительной остановки других скриптов при обработке сразу нескольких операций одновременно.
Java
Java в плане потоковых вопросов – это более гибкий язык. Он поддерживает многопоточность. Такая синхронизация выполняется за счет ключевого слова synchronized. Оно применяется в классах для определения синхронизированных блоков и методов.
Ключевое слово synchronized не подходит для переменных и атрибутов при определении классов. У Java также есть специальная библиотека, включающая в себя спецклассы для работы с несколькими потоками данных.
Выше – пример синхронизации методов в Java. Здесь можно увидеть больше наглядных примеров работы с потоками.
C++
Стандартная библиотека C++ поддерживает средства, при помощи которых программа обрабатывает потоки данных асинхронно. В ней есть набор классов для работы с соответствующими элементами.
Сейчас существует стандарт SFML. В нем можно создавать потоки при помощи sf::Thread:
Функции main и func выполняются параллельно. Происходит это после того, как была выполнена «операция», которая называется thread.launch(). Результат – текст, выводимый обеими функциями, будет смешиваться в консоли:
- Точка входа в поток должна быть передана в sf::Thread.
- Sf::Thread старается быть гибким. Он пытался принимать различные точки входа: методы классов или non-member-функции, выражения с аргументами или без них, функторы и так далее.
- Заданный пример показывает, как реализовывать функцию-член.
C++ может различными способами обрабатывать потоки данных:
- get_id – возвращает идентификатор;
- sleep_for – «спит» на протяжении установленного промежутка времени;
- sleep_untill – «спит» до конкретного момента;
- yield – перенастройка текущих потоков путем передачи приоритетов.
Также вместо std::Thread можно воспользоваться std::async. Данный вариант менее мощный, но его намного проще использоваться, если нужно асинхронно запустить ту или иную функцию:
Здесь можно увидеть больше информации о многопоточности непосредственно в C++.
Как быстро освоить направление
Темы, связанные с программированием и приложениями, можно освоить самостоятельно. Для этого существуют различные сообщества, а также специализированная литература и видео-уроки. Самообразование – неплохой вариант для новичков.
Но есть и более простое и современное решение. Оно носит название онлайн-курсов. Пример – от образовательного центра OTUS. Дистанционно пользователи смогут освоить одно или несколько IT-направлений и профессий одновременно. На занятиях не только научат создавать и работать с потоками, но и писать сложные коды.
Хотите освоить современную IT-специальность? Огромный выбор курсов по востребованным IT-направлениям есть в Otus ! Ниже – один из них: