The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Организация подкачки для чтения больших файлов с помощью иск..."
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Организация подкачки для чтения больших файлов с помощью иск..."
Сообщение от Daos emailИскать по авторуВ закладки on 14-Апр-04, 17:17  (MSK)
Всем привет! Вопрос к знатокам: можно ли (ориентируясь на разработку на C++ под FreeBSD 4.8) создать механизм подкачки с помощью исключений? Что-то типа:
1. Читаем порцию
2. Обрабатываем
3. Если обработка прерывается из-за того,что нужна следующая порция,бросается исключение
4.Обрабатываем исключение (подкачкой очередного фрагмента) и возвращаем
управление в то место обрабатывающей функции, где нужны очередные данные (и отсутствие которых и привело к исключению).

Заранее спасибо!

Алексей

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Организация подкачки для чтения больших файлов с помощью иск..."
Сообщение от gvozd emailИскать по авторуВ закладки(ok) on 15-Апр-04, 08:55  (MSK)
>можно ли (ориентируясь на разработку на C++
>под FreeBSD 4.8) создать механизм подкачки с помощью исключений? Что-то типа:

можно, но по моему очень неплохо было бы и без них.
вообще в любом стандартном компиляторе С++
исключения одинаковые, на какой бы операционной системе он не был.
и под что бы не компилировал.
try
except

ну и throw соответственно.

Но совать сюда исключения - плохая затея. (хотя Страуструпу бы понравилась :)) ).

лучше возвращай просто ошибку.

или еще лучше - в одном потоке обрабатывай, а в другом подкачивай.
когда даные кончаются - генерируешь как-нибудь событие в поток подкачки
(мол чего тормозишь), а в потоке обработки ждешь, пока тот не сгенерирует событие - "все, кончил".


  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Спасибо! А можно ли вернуться из обработки исключения в точк..."
Сообщение от Daos emailИскать по авторуВ закладки on 15-Апр-04, 11:05  (MSK)
возникновения?!? Точнее-вернуться в место, непосредственно предшествующее его возникновению (иначе в этой затее нет смысла?
  Рекомендовать в FAQ | Cообщить модератору | Наверх

7. "нет"
Сообщение от gvozd Искать по авторуВ закладки(??) on 15-Апр-04, 15:39  (MSK)
нет
  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "Организация подкачки для чтения больших файлов с помощью иск..."
Сообщение от ed Искать по авторуВ закладки(??) on 15-Апр-04, 13:53  (MSK)
А как ты собираешся "возвращать" управление ?

Посмотри лучше на man mmap пусть VMM делает тоже самое, но на аппаратном уровне ;-) в винде тоже есть аналог.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "Я бы так и сделал,если бы мне по условию не могли через stdi..."
Сообщение от Daos emailИскать по авторуВ закладки on 15-Апр-04, 14:11  (MSK)
всю эту беду (порядка 100 Гб! :)) Mmapить stdin IMHO затруднительно :))
  Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "Я бы так и сделал,если бы мне по условию не могли через stdi..."
Сообщение от ed Искать по авторуВ закладки(??) on 15-Апр-04, 14:20  (MSK)
>всю эту беду (порядка 100 Гб! :)) Mmapить stdin IMHO затруднительно :))
>
да 100 гиг на ia32 не от mmap-иш, что-нибудь 64 разрядное нужно ;-)

Но с исключениями остаются проблемы:

А как ты собираешся "возвращать" управление ?
stack unwind - далеко несамый быстрый процесс, хотя если вызывать не чаще чем на каждые 100 метров, то терпимо для 100 гиг ;-)

  Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "Эхх,жалко!Будем,значит, юзать стандартный fread :))По-другом..."
Сообщение от Daos emailИскать по авторуВ закладки on 15-Апр-04, 14:34  (MSK)
никак...Типа, если данные в буфере кончились-мы копируем их остаток в начало и дочитываем следующий фрагмент файла до конца буфера.Если не получилос=>временно расширяем его...

Тупо, как гнутый гвоздь...

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру