@Veln

Как понять потоки?

Здравствуйте, добрался я значит до главы "Потоки и файлы" и никак не могу понять что такое потоки и как они работают. Может объясните мне на пальцах данный материал или дадите линк на нужные статьи или лекции, буду очень благодарен
  • Вопрос задан
  • 249 просмотров
Решения вопроса 4
firedragon
@firedragon
Senior .NET developer
На пальцах: вам нужно выкопать картошку. Обычная программа копай от начала и до конца. Мультипоточная. Вы собираете друзей и даёте им лопаты и по грядке. Они копают , скорость увеличивается линейно. Колхоз все тоже самое, но людей больше, лопат на всех не хватает. Вы выделяете отдельного человека который раздаёт лопаты, мешки, показывает куда ехать машинам, подгоняет лентяев. Фиг с ним с полем, дали вам колхоз, ваш thredpool разросся, нужен планировщик и локи что бы люди не копали картошку пока нет машин, а например шли на ферму грузить навоз. Вот как то на пальцах о многопоточность
Ответ написан
Stalker_RED
@Stalker_RED
Поток (stream) в программировании — абстракция, используемая для чтения или записи файлов, сокетов и т. п. в единой манере.

Часто вы можете встретить использование Стандартных потоков (stdin, stdout, stderr) куда можно передавать последовательности данных или читать из этих потоков.

Некоторые драйверы устройств также могут отображаться операционной системой как файл или поток.
https://en.wikipedia.org/wiki/Device_file#Characte...
Ответ написан
Ternick
@Ternick
Здравствуйте, поток это очень простая штука :)
Если очень кратко, то это запуск некой подпрограммы отдельно от своей, после чего можно управлять ей {убить, остановить, запустить, получить результат выполнения, узнать жив ли поток и т.д.}. На мой взгляд есть два брата которые помогают ускорять работу производимую программой - это асинхронность и многопоточность. Давайте пока не будем вдаваться в подробности технической реализации :)
Ну вот в принципе и всё.
Потоки нужны чтобы делать несколько вещей сразу. Если ещё проще, то это как человек с несколькими руками, который может каждой рукой делать что-то отдельное.
Ответ написан
@cython
Как я понимаю, то речь идёт не о многопоточности, а о потоках данных. Потоки данных(stream) можно представить как конвейер, куда всё время поступают новые данные, и откуда их можно забрать. Из stream'а можно считать данные с помощью оператора >>, записать данные в stream при помощи <<.
std::cout << "Запись данных в поток" // Происходит запись в поток вывода(stdout) в консоль
int a;
std::cin >> a; // Происходит чтение потока ввода в консоль(stdin), и запись в переменную a


Файлы в C++ представляют такие же потоки данных, но их вы создаёте сами при помощи ifstream (input file steam, то есть потока ввода данных в файл) и ofstream(output file stream, то есть поток вывода данных в файл).
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
от 45 000 до 70 000 ₽
HighTeam Москва
от 60 000 до 120 000 ₽
Бастион Москва
от 50 000 до 70 000 ₽