LINUX.ORG.RU

Сообщения Burns

 

Непонятное удаление файлов после перезагрузки

Собственно интересует директория var/run/kernel/. В ней находится файлик, необходимый для компиляции. После перезагрузки ОС этот файлик удаляется, хотя, как говорят, раньше такого не происходило. Читал про особенность var/run. Вычитал что-то вроде «файлы созданные в этой директории актуальны только при текущей загрузке ОС. При последущей хорошо бы эту директорию подчищать.» Но в этой папке хранятся файлы, которые созданы 2-3 дня назад. Что за волшебство, верно ли то что я вычитал и как отключить автоматическое удаление нужного мне файла? Сейчас создание этого файла прописано в make, но существование костыля меня не очень-то устраивает.

Burns
()

по теме «Клиент-серверная модель UDP»

Применение: передача видео единственному клиенту

Реализация сервера: два неблокирующих сокета, один для приема команд, второй для передачи видео.

Проблема: при разрыве соединения (при выдергивании кабеля Ethernet), отправка сервером сообщений, используя функцию sendto() начинает занимать время порядка 0.1 секунды. Поскольку программа линейная, это очень сильно тормозит работу сервера. Спустя секунд 10 все восстанавливается. Если воткнуть кабель раньше, то тоже все восстанавливается. Кто-нибудь сталкивался с подобными проблемами? Не хочется фиксить время отправки и по нему отключать передачу видео, поскольку в долгом режиме работы, среднее процессорное время из-за их использования должно увеличиться.

И еще, как минимизировать время передачи пакетов? Пусть способ передачи фрэймов не самый лучший (отправение идет попиксельно - в итоге пиксель на байт), но необходимо реализовать именно его, поскольку обработка уже реализована и пишется код под специфическое железо.

В итоге кадр весит 405 кб. Отправка идет путем рубки кадра по 32кб. В отрубленый кусок добавляется заголовок с номером части, поскольку используется ненадежный UDP. Использование блокирующих сокетов занимает время 28мс, использование неблокирующих - 24-25мс. Из них ~2мс тратятся на рубку. Если переводить в мегабиты - получается скорость в моменты отправки около 124Мбит (точно не помню, пересчитывать в лом) используя 100Мбитную сетевую карту. Собственно вопрос - какие советы по ускорению работы механизма вы можете предложить?

PS Время передачи в идеале бы уменьшить до 10мс, но это совсем не реально, по-моему. Ухудшение качества делать нельзя, уменьшить количество посылаемых кадров... вот тут не знаю... вроде итак 40fps, требуемый минимум 25, а как решить какой кадр отправлять, а какой нет нелегкий вопрос.

Burns
()

не ловит catch

Имеется большой проект. При работе вылетает исключение

//---------------------------------------------------------------------------

terminate called after throwing an instance of 'std::runtime_error'

what(): select timeout

//---------------------------------------------------------------------------

попытка отловить его в главном цикле

//---------------------------------------------------------------------------

try

{

CApp theApp;

theApp.OnExecute(argc, argv);

}

catch(...)

{ printf(«catch runtime_error (main)\n»); }

//---------------------------------------------------------------------------

не увенчивается успехом. Что может быть причиной? Попытки найти породитель сего исключения - аналогично. Типичный printf не помогает - ошибка вылетает в разных кусках кода работы программы . Подскажите хоть что-нибудь, я в отчаянии. Почему исключение не ловится в главной функции?

Burns
()

RSS подписка на новые темы