Эмульсия в коробке | STi Клуб
gekelme
Субарист
- #1
Имеется импреза грб ждм. На очередной замене масла в коробке слилась эмульсия. Слили эту дрянь, залили новое. Проехал 1тыс км. При замене сальника привода, слилась опять эмульсия, но не такая густая как в первый раз. Отсюда вопрос — как промыть коробку не снимая ее? чем промыть? Мотоциклисты промывают и двигатель и коробку от эмульсии солярой, как к этому отнесется моя коробка?
Hecckfy
Повелитель STI-хий
- #2
помыть КПП не снимая ее можно помыть вот этим, делали так несколько машин, масло нужно чтобы отстоялось три дня, верх залить обратно можно, осадок слить — http://innex.ru/fcatalog/info/90gekelme написал(а):
Имеется импреза грб ждм. На очередной замене масла в коробке слилась эмульсия. Слили эту дрянь, залили новое. Проехал 1тыс км. При замене сальника привода, слилась опять эмульсия, но не такая густая как в первый раз. Отсюда вопрос — как промыть коробку не снимая ее? чем промыть? Мотоциклисты промывают и двигатель и коробку от эмульсии солярой, как к этому отнесется моя коробка?
Нажмите для раскрытия…
Снимая КПП -керосин!
gekelme
Субарист
- #3
Без отстаивания есть вариант?Hecckfy написал(а):
помыть КПП не снимая ее можно помыть вот этим, делали так несколько машин, масло нужно чтобы отстоялось три дня, верх залить обратно можно, осадок слить — http://innex. ru/fcatalog/info/90
Снимая КПП -керосин!Нажмите для раскрытия…
Hecckfy
Повелитель STI-хий
- #4
Есть — поменяь масло!gekelme написал(а):
Без отстаивания есть вариант?
Нажмите для раскрытия…
gekelme
Субарист
- #5
Уже менял. Отъездил 1 тыс, стало капельку лучше. При столь мизерной положительной динамике и нынешнем ценнике на масла будет дешевле купить контрактный коробас.Hecckfy написал(а):
Есть — поменяь масло!
Нажмите для раскрытия. ..
Hecckfy
Повелитель STI-хий
- #6
Ну покупай контарктный тогда! На нено есть какая либо гарантия или думаешь он будет с пробегом 20 000 км?!gekelme написал(а):
Уже менял. Отъездил 1 тыс, стало капельку лучше. При столь мизерной положительной динамике и нынешнем ценнике на масла будет дешевле купить контрактный коробас.
Нажмите для раскрытия. ..
Hecckfy
Повелитель STI-хий
- #7
А кто тебе сказал что масло может полечить коробку? В масле нет ни одного компанента который бы что либо восстанавливал! Функция масла -защита, там нет ничего чтобы кпп могло восстановится! Для восстановления нужно уже дополнительно использовать пакет присадок к маслу. ….gekelme написал(а):
Уже менял. Отъездил 1 тыс, стало капельку лучше. При столь мизерной положительной динамике и нынешнем ценнике на масла будет дешевле купить контрактный коробас.
Нажмите для раскрытия…
gekelme
Субарист
- #8
ты какие-то дебри придумываешь. Задача была не вылечить коробку, а ее промыть.Hecckfy написал(а):
А кто тебе сказал что масло может полечить коробку? В масле нет ни одного компанента который бы что либо восстанавливал! Функция масла -защита, там нет ничего чтобы кпп могло восстановится! Для восстановления нужно уже дополнительно использовать пакет присадок к маслу…..
Нажмите для раскрытия…
valera70
Новичок
- #9
Заедь на аппаратную замену,пусть прогонят б/у маслом,а потом заправишь своим.
6a6au’ka
Новичок
- #10
А так мой салярой, это самое лучшее
Zwick
STI-льный
- #11
Так чего с коробкой не так то? Зачем покупать кпп? Ездить пока ездит и все!gekelme написал(а):
Уже менял. Отъездил 1 тыс, стало капельку лучше. При столь мизерной положительной динамике и нынешнем ценнике на масла будет дешевле купить контрактный коробас.
Нажмите для раскрытия…
gekelme
Субарист
- #12
с эмульсией ездить ведь не дело!Zwick написал(а):
Так чего с коробкой не так то? Зачем покупать кпп? Ездить пока ездит и все!
Нажмите для раскрытия. ..
gekelme
Субарист
- #13
разве существует аппаратная замена масла в механике?valera70 написал(а):
Заедь на аппаратную замену,пусть прогонят б/у маслом,а потом заправишь своим.
Нажмите для раскрытия…
gekelme
Субарист
- #14
возможен вариант залить вместо масла керосин/солярку и покрутить на 1-2 передачах, потом слить и залить новое масло?Hecckfy написал(а):
А кто тебе сказал что масло может полечить коробку? В масле нет ни одного компанента который бы что либо восстанавливал! Функция масла -защита, там нет ничего чтобы кпп могло восстановится! Для восстановления нужно уже дополнительно использовать пакет присадок к маслу. ….
Нажмите для раскрытия…
Полюбому ведь остатки керосина/соляры останутся, как они провзаимодействуют с новым маслом?
Прогон с солярой вместо масла сможет привести у нисправимым последствиям?
flickr
Новичок
- #15
керосин бесследно испариться, а вот солярой не советую — она жирная.
Шаман
Повелитель STI-хий
- #16
Промыть дешевым моторным маслом. Залить коробас под завязку.
Как такой вариант?
valera70
Новичок
- #17
Если МКПП,не виска ли накрылась?
Hecckfy
Повелитель STI-хий
- #18
Я вам уже дал совет, как правильно все делать с кпп, вариант опробованый и дающий результат. Кроме как помыть нужно еще взвесить грязь всю, если вы считаете что это можно сделать керосином без разбора кпп, то у вас есть совет выше по керосину! Сегодня сливал масло после этой промывки клубень Вадим-Ростов с кпп, после проблем с кпп и добавления туда Фенома или Хадо присадки к кпп, после которых не было никакого толку, такие же проблемы примерно, так же моем кпп теперь. Результата пока не знаю нужно 3 для слитое отстаивать и смотреть что внизу!gekelme написал(а):
возможен вариант залить вместо масла керосин/солярку и покрутить на 1-2 передачах, потом слить и залить новое масло?
Полюбому ведь остатки керосина/соляры останутся, как они провзаимодействуют с новым маслом?
Прогон с солярой вместо масла сможет привести у нисправимым последствиям?Нажмите для раскрытия. ..
Полная замена масла в АКПП | Полная замена в кпп
Автоматическая коробка передач существенно облегчает управление автомобилем, но и требует особенного обслуживания. Нормальная работа АКП во многом зависит от масла — ATF (automatic transmission fluid). Жидкость выполняет сразу несколько важных функций: отводит тепло от деталей, очищает их от продуктов износа, минимизирует трение, защищает от коррозии, передает момент вращения в гидротрансформаторе. По мере увеличения пробега, качество масла неизбежно снижается. Устойчивость жидкости к нагреву уменьшается, что приводит к неполадкам в управлении автомобилем. Перегретый смазочный состав может повредить отдельные части гидравлического блока управления. Кроме того, АКПП постепенно наполняется металлическими остатками, возникающими в результате трения шестеренок и накладок дисков сцепления, что влияет на вязкость и смазочные свойства ATF. В результате пуски происходят медленнее и требуют больше энергии.
Последствие износа масла в АКП
Качество жидкости в коробке передач напрямую влияет на комфорт вождения и общий функционал машины. Многих автовладельцев вводит в заблуждение понятие «незаменяемая смазка в АКП», введённое мировыми брендами автопрома. Если еще 20 лет назад производители рекомендовали менять ATF через каждые 30 тысяч пробега, то сегодня появился красивый рекламный слоган «жидкость не нуждается в замене на всём сроке эксплуатации».
И вот здесь стоит внимательно изучить вопрос о рекомендованном сроке использования машины. Как правило, это гарантийный период, не превышающий 3 года или 50-125 тысяч километров пробега. «Вечная» смазка, по истечении этого срока, приходит в негодность. Сам факт вождения становится небезопасным для водителя и пассажиров.
Если своевременно не позаботиться о замене масла в коробке передач, детали необратимо повреждаются в силу высокой степени износа. На этом этапе простого слива жидкости и залива нового состава будет недостаточно. Возникает риск капитального ремонта АКП, вплоть до полной замены дорогостоящей запчасти. Цена такого сервиса значительно превышает плановое обновление масла.
С другой стороны, если замена производится своевременно и регулярно специалистом в профессиональном сервисе, это гарантирует оптимальные условия эксплуатации АКПП, продлевает срок ее службы и откладывает возможность любого серьёзного ремонта. Что в свою очередь позволяет избежать неожиданной аварийной ситуации на дороге.
Процесс замены смазки также позволяет провести общее техническое обслуживание АКПП. В рамках услуги проверяется целостность коробки на предмет утечек, состояния уплотнителей коленчатого вала, сальников, карданных соединений и т.д.
Когда надо менять масло в АКПП?
Периодичность обслуживания автоматической коробки передач зависит от нескольких факторов:
- Марка и модель авто – первичный критерий. Как правило, производители дают свои рекомендации относительно частоты обслуживания автоматических трансмиссий и замены смазочных материалов. Например, Ford советует менять масло каждые 48 месяцев.
- Состояние дорожного покрытия, по которому преимущественно движется автомобиль. Если это ровная трасса, то смазочный состав долго будет сохранять свои первичные свойства. На пересечённой местности, в условиях городского движения, этот показатель уменьшается.
- Стиль вождения. Пробуксовка, резкие пуски и торможения негативно сказываются на функционале АКП и неизбежно отражаются на технических характеристиках жидкости.
- Климатические условия, в которых эксплуатируется автомобиль. Морозы, повышенная влажность, резкие перепады температур ослабляют свойства смазочных жидкостей.
В профессиональной среде существует негласное правило – когда масло становится мутным, с заметными примесями грязи, тогда и следует менять. Как показывает практика, такое обслуживание необходимо проводить каждые 60-100 тыс. км пробега, независимо от марки и модели автомобиля. Перед очищением системы, смазка тестируется – проверяется уровень и качество. Первый показатель определяется при помощи щупа или контрольной пробки. Чистоту показывает простой тест с белой тряпкой.
Общие принципы обслуживания АКПП
Регулярная диагностика автоматической коробки передач – обязательное мероприятие для любых видов автомобилей, особенно по истечении гарантийного периода. Тестирование в профессиональном сервисе даёт полное представление о состояние смазки и вариантах её очистки. Результаты проверки показывают, в каком сервисе нуждается АКП:
- Масло темное, но прозрачное, коробка работает в штатном режиме – менять жидкость и фильтр нет необходимости.
- Смазка мутная, просматривается механическая взвесь – показана частичная замена смазки (экспресс) или полная промывка системы. Снятие поддона покажет более точную картину состояния жидкости. Например, если на магните обнаружатся металлические скопления («ёжики»), тогда стоит морально и материально подготовиться к капитальному ремонту.
- Жидкость имеет неприятный горелый запах, в ней невооруженным взглядом просматриваются твердая взвесь в виде стружки, крошек, крупных металлических частиц – АКПП нуждается в полной переборке или замене. В этом случае ремонт коснётся и других систем автомобиля, в частности тормозной. Цена на такой сервис сравнима с 5-10 заменами масла в коробке. Поэтому затягивать с диагностикой не рекомендуется.
Регламентированный капитальный ремонт АКП проводится в среднем раз в 10-15 лет. Но это только в том случае, если коробка регулярно и качественно обслуживалась.
Способы замены масла в автоматической коробке передач
На профессиональных СТО замена жидкости в АКП производится по двум технологиям:
- Первый метод – щадящий. Открывается сливная пробка, и под действием силы тяжести сливается 50-70% масла, в зависимости от модели АКП. Например, из коробок типа AISIN можно извлечь не больше 50% жидкости, что делает метод очистки малоэффективным. После слива масла, АКП заправляется новой смазкой. Процесс необходимо повторять несколько раз, после каждой тысячи километров пробега, до полного обновления жидкости. Главный недостаток метода заключается в том, что не удаляются загрязнения и отработанный состав в охладителе, трубопроводах и гидротрансформаторе, наиболее важной части автоматической коробки передач.
- Второй метод – полная замена масла в КПП аппаратом. Осуществляется промывка системы под давлением специальным устройством. Замена масла происходит во всех элементах коробки – радиаторе, трубопроводах, гидротрансформаторе. Метод справедливо считается лучшим для комплексного обслуживания АКП, в силу того, что позволяет полностью промыть коробку передач и привести её к изначальным заводским характеристикам.
Современные коробки передач – сложные электронные устройства, с многочисленными функциями. Многие АКП очень чувствительны к уровню, температуре и качеству масла. Поэтому, даже относительно простую, частичную замену жидкости лучше доверить специалистам в профессиональном автосервисе. Мастер, с опытом работы и соответствующей квалификацией, сможет гарантировать положительный результат.
Станция технического обслуживания «Дикон Авто», Ярославль, предлагает не проводить эксперименты со своим автомобилем и сразу обращаться за профессиональной помощью. На СТО специалисты проведут качественную диагностику и, при необходимости, заменят смазку в АКПП, придерживаясь основных технологических принципов. В рамках услуги предусмотрен подбор оптимального состава для определенного вида автоматической коробки передач.
fflush() в C — Темы масштабирования
Обзор
Буфер — это временная память (в основном часть ОЗУ или может быть определена пользователем в программе в виде массива символов) для хранения вывода, заданного программой или конкретной функцией, и буферная память, присутствующая в ОЗУ, печатает вывод в основное место назначения, когда он заполняется, означает, что не осталось памяти для добавления дополнительных данных, символ конца строки (\n) попаданий или когда вывод предоставляется небуферизованной функцией.
Функция fflush() в C используется для очистки буфера любого потока, присутствующего в ОЗУ, что означает, что она печатает данные буфера в соответствующий файл, находящийся в основной памяти. fflush() в C определен в
Синтаксис fflush() в C
Синтаксис flush() в C прост, так как принимает только один параметр.
Параметры fflush() в C
Функция fflush() в C принимает только один параметр, который является указателем на объект File, в который мы хотим сбросить или записать наши данные. Лучшим примером файлового объекта является stdout, stderr и т. д.
Возвращаемое значение функции fflush() в C
Тип возвращаемого значения функции fflush() в C равен нулю, если вызов функции успешен, что означает, что буфер очищен, а в случае неудачи возвращается ошибка End of File или eof в форме положительного целого числа, а индикатор установлен на индикацию feof. Чтобы узнать об ошибках, таких как eof, feof и т. д., обратитесь к статье Обработка ошибок в C.
Пример
В этом примере мы собираемся использовать функцию flush() языка программирования C для вывода данных из буферизованной памяти на консоль без использования символа конца строки (\n). Поскольку функция printf() в C является буферизованной функцией, это означает, что данные, выдаваемые этой функцией в качестве вывода, сначала попадают в буфер, а не на консоль или в основной файл. Итак, мы собираемся использовать fflush() в C, чтобы принудительно сделать это. Код:
Ввод: 5
Вывод:
Объяснение: В приведенном выше коде мы использовали функцию C fflush() для очистки буфера, но это не показывает никакой разницы по сравнению с тем, если бы мы здесь не использовали flash в C. Рассматривайте этот пример как просто базовый код, демонстрирующий синтаксис использования flush() в C. Позже в этой статье мы обсудим и даже увидим вывод кода, в котором функция fflush() вносит изменения в вывод.
Исключения fflush() в C
9Функция 0004 fflush в C обычно не выдает никаких исключений, но в некоторых случаях fflush в C может демонстрировать неопределенное поведение, например, может работать или не работать нормально с файлом stdin. Мы подробно обсудим случай stdin позже в этой статье.Что такое fflush() в C?
Прежде чем перейти к подробному рассмотрению fflush() в C, давайте рассмотрим некоторые термины, связанные с fflush() в функции C. Обычно печать любых данных или просто любых выходных данных функции сохраняется в любом предоставленном файле, который хранится в основной или вторичной памяти, и каждый раз запись данных в файл требует больших затрат времени или других ресурсов для операционной системы. Чтобы решить эту проблему, операционная система создает временную память, известную как буфер в ОЗУ или основной памяти, для хранения данных и их последующей печати, поскольку основная память легко и быстро доступна по сравнению с основной памятью, в которой находится выходной файл. Но иногда это может стать причиной вывода значения раньше или позже ожидаемой позиции или времени. Данные в буферной памяти сбрасываются, когда встречается любой символ новой строки (‘\n’), буферная память заполняется или вызывается любая небуферизованная функция. Теперь буферизованные выходные функции — это те функции, чьи выходные данные хранятся в буферной памяти, а небуферизованные выходные функции — это те функции, чьи выходные данные не были оценены в буфере, и они также очищают буфер.
Теперь давайте рассмотрим пример, в котором использование буферизованной функции перед небуферизованной дает результат, отличный от ожидаемого. Код:
Выход 1:
Выход 2:
Выход 3:
Примечание: Все выходные данные печатаются для одного и того же кода с разными типами компиляторов. В приведенном выше коде, во-первых, у нас есть три разных вывода, да, это возможно и зависит от компилятора.
Во-первых, мы использовали функцию C print()` для печати данных в разные потоки, такие как stdout и stderr. Здесь stdout — это буферизованный поток, который хранит свои данные в буферизованной памяти, а stderr — это небуферизованный поток, который выводится непосредственно на консоль или в файл хранилища. В первом и втором выводах мы видим, что оператор1 и оператор3 печатаются вместе, а оператор2 печатается либо до, либо после них. В третьем случае мы не получили вывод оператора2.
Output1:
Здесь вывод для потока stdout хранится в другой памяти или месте, а для stderr — в другом, и чтобы отобразить их на консоли, компилятор печатает сначала для stdout, а затем.
Output2:
Здесь компилятор не печатал вывод для потока stderr и отображал только для потока stdout.
Output3:
Так как stdout буферизуется паром или, точнее, буферизируется новая строка, в то время как stderr небуферизуется паром, поэтому, когда мы собираемся напечатать оператор2, он будет напечатан перед оператором1, а затем будет напечатан оператор3.
Теперь давайте воспользуемся функцией fflush() в функции C и получим ожидаемый вывод, а именно, поскольку оператор1 печатается перед оператором2 и аналогично оператор2 печатается перед статусом3 в нашем коде, в выводе они также должны присутствовать в том же порядке: Код:
Вывод:
В приведенном выше коде мы очистили буфер с помощью fflush() в функции C и получили ожидаемый результат.
Примечание: Для предыдущего кода компиляторы, предоставляющие второй вывод, будут показывать это изменение, а для других компиляторов, которые отображали вывод1 и вывод3, вывод останется прежним.
Дополнительные примеры
Пример 1: Использование функции fflush() с входным потоком
Мы можем использовать fflush(stdin), но делать это не рекомендуется, потому что пока мы очищаем поток stdout, мы знаем, что данные оттуда будут напечатаны в файле или потоке, но данные из потока stdin будут потеряны, как? Возьмем пример: В этом коде мы объявляем массив и принимаем пользовательский ввод для размера массива и всех элементов массива, и мы попытаемся напечатать элементы массива. Здесь мы будем принимать входные данные с помощью файла и добавлять все данные, такие как размер и элементы массива, одновременно в файл. В коде мы будем использовать метод fflush(stdin) для сброса входного потока после ввода только размера массива. Это означает, что информация об элементах массива будет потеряна, и наш массив будет содержать мусорное значение. Код:
Ввод:
Выход:
Примечание: Значение мусора может меняться от компилятора к компилятору.
Объяснение: В приведенном выше коде мы использовали файловый метод «freopen()», чтобы принимать пользовательский ввод через файл input.txt и одновременно передавать все вводимые данные. Кроме того, мы взяли ввод размера массива и очистили входной поток, что означает, что все данные файла «input.txt» стираются, и все элементы массива будут содержать значение мусора. Кроме того, если мы прокомментируем fflush(stdin), то этот код будет работать нормально.
Кроме того, если мы сбрасываем выходной файл, он будет сброшен в другое место, но если мы сбрасываем стандартный ввод, это не будет иметь смысла, как если бы мы ввели какие-то данные и сбрасываем их.
Заключение
- Буфер — это «временная память для хранения вывода, а затем он распечатывает вывод в основное место назначения.
- Буфер становится пустым, когда он заполняется, попадает символ конца строки (\n) или когда выходные данные предоставлены небуферизованной функцией.
- Функция fflush() в языке C используется для очистки буфера любого потока и вывода данных из буфера в соответствующий файл. fflush() в C определен в
. - Функция fflush() в C принимает только один параметр, который является указателем на объект File, в который мы хотим сбросить или записать наши данные.
- Тип возвращаемого значения функции fflush() в C равен нулю, если вызов функции успешен, а если он не удался, то будет возвращена ошибка End of File или of, а индикатор установлен для указания feof.
- Функцию fflush() в C можно использовать с потоком stdin, но это не рекомендуется.
Зачем нужно очищать выходной буфер!
- Форум
- Общие платы для программирования
- Программирование на C++
- Зачем нужно очищать буфер вывода!
- Начало работы с C или C++ | Учебник C | Учебник по С++ | Часто задаваемые вопросы по C и C++ | Получить компилятор | Исправления для распространенных проблем
01.11.2018 #1
Для консоли кажется, что текст сразу же отправляется на консоль после оператора cout … так что даже если бы вы сбросили … что там нужно сбросить? Весь выход там, где он есть!.. Смущает..
01.11.2018 #2
Некоторые системы выводят на консоль только при появлении символа новой строки, плюс вы можете включать и выключать буферизацию через unitbuf.
01.11.2018 #3
Для консоли кажется, что текст сразу отправляется на консоль после оператора cout. Обычно, если вы используете современную операционную систему, такую как Windows, текст не отправляется на «консоль», пока что-то не вызовет сброс. Есть несколько вещей, которые вызывают сброс в программах на C++.
1. Вы запускаете ручную очистку потока с помощью чего-то вроде std::cout.flush() или std::cout.endl().
2. При нормальной работе std::cout при обнаружении операции ввода сначала будет сброшен поток вывода (flush()).
3. Выходной поток переполняется, что также приводит к сбросу () потока.01. 11.2018 #4
Первоначально написал tabstop
Некоторые системы выводят на консоль только при появлении символа новой строки, плюс вы можете включать и выключать буферизацию через unitbuf.
Новая строка как в endl или включая «\n»? Итак, если unitbuf делает так, что после каждой вставки происходит сброс, не означает ли это, что мы сбрасываем, когда это действительно не нужно, так что будет ли это иметь практические цели? Первоначально написал jimblumberg Обычно, если вы используете современную операционную систему, такую как Windows, текст не отправляется на «консоль», пока что-то не вызовет сброс. Есть несколько вещей, которые вызывают сброс в программах на C++.1. Вы запускаете ручную очистку потока с помощью чего-то вроде std::cout.flush() или std::cout.endl().
Из того, что я прочитал, для отправки данных из буфера на выход, которым в данном случае является консоль, требуется сброс. Допустим, я не пишу ручной флеш, не использую операцию ввода, не заполняю поток вывода до краев, но все равно все, что я набрал с помощью cout, идет в консоль.. А флеша не было?
2. При нормальной работе std::cout при обнаружении операции ввода сначала будет сброшен поток вывода (flush()).
3. Выходной поток заполняется до предела, что также приводит к вызову функции flush() потока.Если сброс не требуется, чтобы убедиться, что данные поступают на консоль, то какова будет его практическая цель?
01.11.2018 #5
Если для обеспечения передачи данных на консоль не требуется сброс, то какова будет его практическая цель? При нормальной работе стандартного потока вывода (cout) требуется сброс.
Три пункта, которые я перечислил выше, — не единственная причина сброса стандартного потока вывода. Другая причина заключается в том, что когда программа завершается нормально, все потоки сбрасываются, а затем закрываются.
Новая строка, как в endl, или включая «\n»? Функция endl() отличается от символа ‘\n’. Символ новой строки не приводит к сбросу потока, это просто обычный символ. Функция endl() печатает символ новой строки, а затем очищает поток.01.11.2018 #6
Первоначально Послано Nwb
Новая строка как в endl или включая «\n»? Итак, если unitbuf делает так, что после каждой вставки происходит сброс, не означает ли это, что мы сбрасываем, когда это действительно не нужно, так что будет ли это иметь практические цели?
endl по определению является операцией сброса. ‘\n’ просто помещает символ новой строки в выходной поток. В C было различие между отсутствием буферизации (немедленный вывод), буферизацией строк (вывод на новой строке) и полной буферизацией (вывод только при явном сбросе или полном буфере), а стандартный вывод по умолчанию будет одним из первых двух в зависимости от системы (но я, кажется, чаще встречал буферизацию строк). Unitbuf С++, казалось бы, соответствует без буферизации, и я не вижу опции, которая явно соответствует буферизации строк. Стандарт С++, кажется, говорит, что unitbuf должен быть отключен по умолчанию, но, во всяком случае, на моей машине с Win10 это не работает — старый MSVCRT, который использует мой gcc, вообще не выполняет буферизацию; используя VS, вы можете увидеть задержку, но в конечном итоге все равно будет напечатано. Например, с кодомКод:
#include
исполняемый файл, скомпилированный с помощью g++, немедленно напечатает «Печать»; исполняемый файл, скомпилированный в Visual Studio, отобразит «Печать» примерно через четыре секунды. (Конечно, ни в том, ни в другом случае «Печать» никогда не появится.)интервал основной (пустой) { std::cout << std::nounitbuf << "Печать"; пока(1) ; вернуть 0; } 01.11.2018 #7
Я использую VS 2017, и он сразу же печатает «Печать». Означает ли это, что моя система не выполняет буферизацию? Нужна ли буферизация для вывода, какой в ней смысл? Означает ли это, что моя система также не будет буферизовать файловый ввод-вывод или это только для консоли?
Кроме того, в то время как цикл занимает все ядро моего ЦП, если бы я использовал многопоточность, это не означало бы, что будет использоваться более одного ядра ... верно?
Последний раз редактировалось Nwb; 01.11.2018 в 09:41 утра.
01.11.2018 #8
Первоначально написал Nwb
Я использую VS 2017, и он, кажется, сразу печатает «Печать». Означает ли это, что моя система не выполняет буферизацию? Нужна ли буферизация для вывода, какой в ней смысл? Означает ли это, что моя система также не будет буферизовать файловый ввод-вывод или это только для консоли?
Я предполагаю, что MS решила, что не будет полностью/правильно реализовывать буферизацию, по крайней мере, для консоли. Буферизация не требуется для вывода, особенно на консоль, но для файлового ввода-вывода это действительно может быть довольно большой проблемой (поскольку файловый ввод-вывод может быть довольно медленным, особенно если вы используете что-то вроде подключенного диска, который не обязательно находится даже в том же здании, что и вы сейчас). Я собираюсь предположить без тестирования, что у вас есть буферизация для файлового ввода-вывода, поскольку было бы нелепо, если бы вы этого не сделали.
Первоначально Послано NwbКроме того, цикл while занимает все ядро моего процессора, если бы я использовал многопоточность, это не означало бы, что будет использоваться более одного ядра .. верно?
Это всего лишь один процесс, так и должно быть.01.11.2018 #9
Итак, буферизация лучше, чем отсутствие буферизации, потому что она быстрее, когда мы говорим о файловом вводе? Каково соглашение для очистки вывода файла, я очищаю после каждой строки или после, скажем, списка последовательных операторов (например, предположим, что мне нужно было напечатать 10 строк текста о какой-то покупке), или я просто полагаюсь на . close() для очистки.
С какими проблемами я могу столкнуться, из-за чего важно сбросить данные, а не сбрасывать только перед закрытием файла? Это незначительно, и может ли проблема быть между операторами ввода файла (если таких проблем не возникает, я могу сбрасывать в конце последовательных операторов печати вместо каждой строки, поэтому я и спрашиваю)?
Какова длина выходного буфера, могу ли я изменить длину и что произойдет, если длина будет превышена, как я узнаю, если это произойдет, и как отреагирует буфер?
endl эквивалентно "\n"<
О, а также на большинстве форумов vBulletin, которые я видел, есть спойлерный BB-код, а на этом нет... по какой-то конкретной причине?
Кстати, большое спасибо, что поделились со мной!
Последний раз редактировалось Nwb; 01.11.2018 в 10:13.
01. 11.2018 #10
Итак, буферизация лучше, чем отсутствие буферизации, потому что она быстрее, когда мы говорим о файловом вводе? Когда мы начали говорить о вводе файлов? Я думал, мы говорим о функции flush(), которая работает только с выходными потоками.
Кстати, стандартный поток ввода обычно буферизуется, так что вы можете использовать клавишу Backspace для "удаления" нажатий клавиш. Если бы стандартный ввод не был буферизован, было бы трудно изменить ввод до того, как ваша программа его увидит.
Каково соглашение для очистки вывода файла, я очищаю после каждой строки или после, скажем, списка последовательных операторов (например, предположим, что мне нужно было напечатать 10 строк текста о какой-то покупке), или я просто полагаюсь на .close() для очистки. Это зависит от того, большую часть времени вы можете просто полагаться на обычные триггеры сброса, такие как закрытие файла и заполнение выходного буфера. Однако иногда желательно вручную сбрасывать () буфер вывода через определенные промежутки времени, такие как конец строки, когда вся запись была записана. Ручная очистка потока может быть дорогостоящей по времени, но она может быть бесценной, если используется для предотвращения потери данных. endl эквивалентен "\n"<Нет, это не одно и то же, и если вы полностью заинтересованы в производительности, предпочтительнее '\n', поскольку он не очищает поток. Какова длина выходного буфера, могу ли я изменить длину и что произойдет, если длина будет превышена, как я узнаю, если это произойдет, и как отреагирует буфер? Длина выходного буфера по умолчанию определяется реализацией, она может быть где-то между 0 и максимальным размером, который может храниться в типе fpos_t (включительно). Да, вы можете изменить размер буфера, но это изменение обычно должно быть сделано до того, как вы попытаетесь использовать поток. Если вы введете больше символов, чем может вместить буфер, буфер сбрасывается, когда он достигает своего предела. 01.11.2018 #11
Соглашение о сбросе вывода файла состоит в том, что вы не устанавливаете буфер на то, что она считает оптимальным объемом для записи за один раз, в зависимости от того, как организован диск - , если только вам не нужно что-то в реальном времени (например, один процесс записывает в файл, из которого другой процесс читает) или вы параноидально относитесь к тому, что программа неожиданно умирает и часть работы теряется. C имеет константу BUFSIZ, но это не должно быть чем-то, что вы можете изменить, насколько я понимаю.
01.11.2018 #12
C имеет константу BUFSIZ, но это не должно быть чем-то, что вы можете изменить, насколько я понимаю. Правильно это константа ведь.
Но вы можете изменить размер буфера потока C++, но, как вы сказали, до тех пор, пока кто-то действительно не поймет, что он делает, он должен оставить размер буфера в покое, поэтому я не буду здесь вдаваться в подробности о том, как изменить этот размер. Создатели компиляторов довольно хорошо умеют выбирать правильные значения в большинстве случаев.
01.11.2018 №13
Могу ли я столкнуться с ситуацией, когда моя программа неожиданно умирает или это незначительно? Спасибо
02.11.2018 №14
Первоначально Послано Nwb
Могу ли я столкнуться с ситуацией, когда моя программа неожиданно умирает или это незначительно? Спасибо
Это зависит от того, насколько хорошо вы разбираетесь в программировании, так как большинство ситуаций, когда ваша программа неожиданно умирает, вызваны ошибкой программиста (застревание в бесконечном цикле, выход за пределы массива, неправильное чтение входного файла...).
« Предыдущая тема | Следующая тема »
Популярные страницы- Как начать работу с C++ (или C) сегодня
- C Учебник
- Учебник по C++
- 5 способов научиться программировать быстрее
- 5 самых распространенных проблем, с которыми сталкиваются начинающие программисты
- Как настроить компилятор
- 8 Распространенные ошибки программирования
- Что такое С++ 11?
- Создание игры от начала до конца
- Как создать общую библиотеку в Linux с помощью GCC — 30 декабря 2011 г.