dememax: (сонливость)
[personal profile] dememax

bad_cast

Из стандарта, 5.2.7. Dynamic cast:
The value of a failed cast to pointer type is the null pointer value of the required result type. A failed cast to reference type throws std::bad_cast (18.7.2).

flush

Если вы что-то выводите - ещё не факт, что это сразу свалится куда нужно. В частности, если это сделали перед fork(), то это приведёт к тому, что строка, печатаемая функцией из семейства print - будет распечатана в обоих процессах. Никакой '\n' в выводимой строке (в отличии от std::endl) не приведёт к имплицитному вызову flush(). С другой стороны, если вызвали fclose() - там явно написано, что flush будет, а в соответствующей close() - такого не нашёл.

sync

Старый добрый sync(). Он всесилен! :-)

Date: 2012-11-23 05:54 pm (UTC)
From: [identity profile] madf.livejournal.com
Тогда еще до кучи fdatasync и posix_fadvise с флагом POSIX_FADV_DONTNEED.

Date: 2012-11-23 06:16 pm (UTC)
From: [identity profile] mansch.livejournal.com
это что еще за троль ??

Re: это что еще за троль ??

Date: 2012-11-23 07:22 pm (UTC)
From: [identity profile] mansch.livejournal.com
Иисус - я могу рассуждать с тобой только о вере
From: [identity profile] madf.livejournal.com
А, вон оно о чем... От зубов - это да.
Копать про fdatasync и posix_fadvise я не от хорошей жизни начал. Надо было чтобы при жестком отключении питания одной железяки свежеправленные файлики оставались свежеправленными.
К стати, прямого способа сделать это с плюсовыми потоками не нашел. Методов у них подобных нет, а хендл снаружи недоступен. Приходилось переоткрывать файл C-шным API и делать все оттудова.
From: [identity profile] madf.livejournal.com
Да, он вызывает std::basic_ostream::flush() который сбрасывает внутренний буфер потока на следующий уровень - в пространство ядра. Он аналогичен fflush() для буферизованного I/O в C. Но этого мало.
Смотри, по сути у нас есть три буфера: буфер в std::basic_ostream (аналогичен буферу в fopen/fwrite/fclose из C), внутренние буферы ядра (в частности буфер ФС) и буфер устройства. На последний мы повлиять не можем (к сожалению), а вот на первые два - без проблем. С первым работает flush()/fflush(), со вторым работает sync()/fsync()/fdatasync().
sync() - это "удар по площадям". Он сбрасывает все дисковые буферы - тормоз тот еще.
fsync() - это "точечный удар". Он сбрасывает только данные и метаданные относящиеся к указанному файловому дескриптору.
fdatasync() - это тот-же fsync(), но он не трогает метаданные. Т.е. вся важная информация будет записана на устройство, а atime/mtime останутся в буфере. Он меньше "дергает" устройство и быстрее работает, и при этом дает достаточные гарантии по данным.
Очень жаль только что из std::basic_ostream последние две функции недоступны.
Что касается posix_fadvise то это уже из области внутренних оптимизаций ядра. Особого эффекта от него я не заметил, но почему бы и не сказать ядру что с этим файлом мы больше не собираемся работать.

Date: 2012-11-23 07:54 pm (UTC)
From: [identity profile] vaddimka.livejournal.com
я вот не знаю что такое sync
точнее слышал что вроде как это в новый стандарт впендюрили (наверняка аналогично жавовскому синку или шарповому), но ни разу не юзал

Date: 2012-11-23 11:20 pm (UTC)
From: [identity profile] vaddimka.livejournal.com
а чем оно великое? для 99.99% задач оно нафиг не нужно )
From: [identity profile] madf.livejournal.com
Несколько лет назад был великий срач между Линусом и разработчиками ext4 по этому поводу. Что-то они там не сошлись на тайм-аутах и ФС теряла данные на раз при каждом падении (а она тогда сырая была и падала очень часто).

Date: 2012-11-24 07:21 pm (UTC)
From: [identity profile] vaddimka.livejournal.com
-vpre
пресет бейзлайн заюзай
(названия пресетов где-то в /usr/share/ffmpeg/libx264 вроде)
я не знаю что там с нокией, но старые айфоны очень не любили b-фреймы
-acodec copy можешь сделать если оригинальный звук нокия читает, если нет - попробуй -acodec libfaac или aac, на худой конец -acodec libmp3lame

Date: 2012-11-25 09:59 pm (UTC)
From: [identity profile] vaddimka.livejournal.com
есличо, b-frames отключаются как bf=0
если будут проблемы, можно скопировать любой презет и добавить туда
я не знаю что там с айподами, но флеш и старые версии ios очень не любили би-фреймы

Profile

dememax

May 2023

S M T W T F S
 123456
78910111213
14151617181920
21 2223 24252627
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 12th, 2025 08:18 am
Powered by Dreamwidth Studios