Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия, Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки
Работать с потоками не сложно, но что такое потоки? Знаю, что поток это абстракция. Cin и cout это объекты, или потоки. Эти объекты (потоки) позволяют вводить и выводить данные.
aa_dav
Re: Что такое потоки в C++?
15.07.2015, 08:50
Вообще сразу надо заметить, что потоки бывают "потоки данных" (streams) и "потоки выполнения" (threads). Мы здесь говорим о первых. В целом потоки это действительно некая абстракция цепочки байт. Мы можем положить в цепочку байты (информацию) и извлечь. Применительно к файлам эта концепция так же сопровождается позицией в файле начиная с которой будут ложится или считываться байты (и при этом позиция автоматически продвигается вперед). Применительно к сокетам при обмене данными по сети позиции как таковой нет - просто одна сторона получается первым то, что первым положила другая сторона (подобные реализации называют еще "трубами"). Так или иначе поток данных это абстракция вокруг данной концепции и ключевым фактором абстракции является то, что код с ней работающий не обязан знать какой экземпляр потока у него на руках - файлы ли, сокеты ли или что-то иное, он просто ложит байты и/или получает из потока согласно интерфейсу.
И вот тут внезапно оказывается, что потоки данных в С++ реализованы с этой точки зрения как минимум чересчур сложно, как максимум - криво, потому что пытаются в себе сразу объединить парсер данных, поток данных и еще кучу всего в не очень доступной и очевидной манере.
Я бы сказал что на них не стоит новичку смотреть, как на эталон того как стоит реализовывать потоки. А так - да, абстракция, наследники ios.