38. Потоки

38. Потоки

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

Разработка и осуществление стандартных средств ввода/вывода для языка программирования является заведомо трудной работой. Традиционно средства ввода/вывода изобретались только для небольшого числа встроенных типов данных. Но в C++ программах обычно применяется много типов, определенных пользователем, и необходимо обрабатывать ввод и вывод также и значений этих типов. Средство ввода/вывода должно являться простым, удобным, надежным в употреблении, эффективным и гибким и при этом полным. Еще не удавалось угодить всем, поэтому у пользователя должна иметься возможность задавать альтернативные средства ввода/вывода и увеличивать стандартные средства ввода/вывода применительно к требованиям приложения.

C++ устроен так, чтобы у пользователя имелась возможность определять новые типы, такие же эффективные и удобные, сколь и встроенные типы.

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

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

К примеру:

put(cerr,»x = «); // cerr – поток вывода ошибок

put(cerr,x);

put(cerr,» »);

Тип параметра устанавливает то, какая из функций put будет вызываться для каждого параметра. Это решение использовалось в нескольких языках. Но ему не хватает лаконичности. Перегрузка операции << значением «поместить в» дает лучшую запись и дает возможность программисту выводить несколько объектов одним оператором. К примеру:

cerr << «x=» << x << « »;

где cerr представляет собой стандартный поток вывода ошибок.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

10.4 ПОТОКИ

Из книги Архитектура операционной системы UNIX автора Бах Морис Дж

10.4 ПОТОКИ Схема реализации драйверов устройств, хотя и отвечает заложенным требованиям, страдает некоторыми недостатками, которые с годами стали заметнее. Разные драйверы имеют тенденцию дублировать свои функции, в частности драйверы, которые реализуют сетевые


38. Потоки

Из книги Программирование автора Козлова Ирина Сергеевна

38. Потоки Язык C++ не обладает средствами для ввода/вывода. Ему это и не нужно; подобные средства легко и элегантно можно создать, применяя сам язык. Стандартная библиотека потокового ввода/вывода дает возможность осуществлять гибкий и эффективный с гарантией типа метод


7.3.1.2. Потоки

Из книги Искусство программирования для Unix автора Реймонд Эрик Стивен

7.3.1.2. Потоки Потоки (streams) сетевого взаимодействия были разработаны Деннисом Ритчи для Unix Version 8 (1985). Их новая реализация называется STREAMS (именно так, в документации все буквы прописные). Впервые она стала доетупной в версии 3.0 System V Unix (1986). Средство STREAMS обеспечивало


7.3.1.2. Потоки

Из книги Искусство программирования для Unix автора Реймонд Эрик Стивен

7.3.1.2. Потоки Потоки (streams) сетевого взаимодействия были разработаны Деннисом Ритчи для Unix Version 8 (1985). Их новая реализация называется STREAMS (именно так, в документации все буквы прописные). Впервые она стала доступной в версии 3.0 System V Unix (1986). Средство STREAMS обеспечивало


Потоки

Из книги UNIX: взаимодействие процессов автора Стивенс Уильям Ричард

Потоки Хотя концепция процессов в системах Unix используется уже очень давно, возможность использовать несколько потоков внутри одного процесса появилась относительно недавно. Стандарт потоков Posix.1, называемый Pthreads, был принят в 1995 году. С точки зрения взаимодействия


Удаленные потоки

Из книги MySQL: руководство профессионала автора Паутов Алексей В

Удаленные потоки Функция CreateRemoteThread позволяет создавать потоки, выполняющиеся в другом процессе. По сравнению с функцией CreateThread в ней имеется один дополнительный параметр для указания дескриптора процесса, а адрес функции, задающий начальный адрес нового потока, должен


Потоки и производительность

Из книги Фундаментальные алгоритмы и структуры данных в Delphi автора Бакнелл Джулиан М.

Потоки и производительность Программы grepMP и grepMT по своей структуре и сложности сопоставимы друг с другом, однако, как и следовало ожидать, программа grepMT характеризуется более высокой производительностью, так как переключение между потоками осуществляется ядром намного


Облегченные потоки

Из книги QNX/UNIX [Анатомия параллелизма] автора Цилюрик Олег Иванович

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


2.4.5.5. Потоки Falcon

Из книги Введение в QNX/Neutrino 2. Руководство по программированию приложений реального времени в QNX Realtime Platform автора Кёртен Роб

2.4.5.5. Потоки Falcon Falcon использует два рабочих потока, чтобы обработать информацию внутри структур Falcon. Один поток посвящен перемещению совершенных изменений данных из файла регистрации на страницы и объединению индексных изменений с постоянными индексными данными.


Потоки битов

Из книги Программирование для Linux. Профессиональный подход автора Митчелл Марк

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


Потоки

Из книги C++ для начинающих автора Липпман Стенли

Потоки Последующие расширения[14] POSIX специфицируют широкий спектр механизмов «легких процессов» — потоков (группа API pthread_*()). Техника потоков вводит новую парадигму программирования вместо уже ставших традиционными UNIX-методов. Это обстоятельство часто недооценивается.


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

Из книги автора

Процессы и потоки В этой главе представлено описание процессов и потоков в QNX/ Neutrino, диспетчеризации, системы приоритетов, и дано понятие о реальном времени. Вы узнаете о состояниях потоков и алгоритмах диспетчеризации, которые применяются в QNX/ Neutrino, а также изучите


Глава 4 Потоки

Из книги автора

Глава 4 Потоки Потоки, как и процессы, — это механизм, позволяющий программам выполнять несколько действий одновременно. Потоки работают параллельно. Ядро Linux планирует их работу асинхронно, прерывая время от времени каждый из них, чтобы дать шанс остальным.С


4.2.2. Неотменяемые потоки

Из книги автора

4.2.2. Неотменяемые потоки Поток может вообще отказаться удаляться, вызвав функцию pthread_setcancelstate(). Как и в случае функции pthread_setcanceltype(), это оказывает влияние только на вызывающий поток. Первый аргумент функции должен быть PTHREAD_CANCEL_DISABLE, если нужно запретить отмену потока, и