none
Взаимодействие потоковых классов ввода-вывода RRS feed

  • Вопрос

  • Здравствуйте. Как я понял, в C++ есть две иерархии классов для ввода-вывода: первая иерархия определяет шаблоны для самих объектов, а вторая позволяет создавать буферы ввода-вывода. Скажите пожалуйста, как эти иерархии взаимодействуют? (смысл слова "буфер" мне понятен, интересно как это с точки зрения реализации)  
    10 января 2015 г. 22:16

Ответы

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

    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

    11 января 2015 г. 10:53

Все ответы

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

    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

    11 января 2015 г. 6:46
  • А почему буфер ускоряет процесс? Я всегда думал: чем короче путь, тем быстрее приедешь. А тут сначала в буфер, а потом уж только в файл.
    11 января 2015 г. 8:36
  • Представьте себе, что для записи каждого байта системе пришлось бы раскручивать винчестер, позиционировать головку на нужный сектор и производить запись. Сколько времени ушло бы на запись или чтение хотя бы мегабайта данных? Проще накопить данные в оперативной памяти, а затем ОДИН раз проделать вышеописанную процедуру.

    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

    11 января 2015 г. 10:53