Russian Qt Forum
Июнь 16, 2024, 04:19 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Асинхронная запись (добавление) текста в файл  (Прочитано 11382 раз)
Serr500
Гость
« Ответ #15 : Июнь 06, 2012, 15:18 »

http://msdn.microsoft.com/en-us/library/windows/desktop/aa365748%28v=vs.85%29.aspx
Параметр lpCompletionRoutine.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #16 : Июнь 06, 2012, 15:34 »

Ну что Вы много ссылок знаете - я ж не спорю Улыбающийся Но, возможно, было бы лучше если бы простыми словами пояснили как и в какой момент эта ф-ция вызывается. А то товарищи уверенно путают асинхронку с кешированием
Записан
Serr500
Гость
« Ответ #17 : Июнь 06, 2012, 15:44 »

При включенном кэшировании CompletionRoutine вызовется после помещения всего буфера в кэш, при выключенном - после полной записи на диск. Точнее, после попадания всего буфера в кэш диска или RAID-контроллера, а вовсе не на магнитные пластины диска, как многие думают.

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

Асинхронность. Метод помещает запрос на запись в очередь и немедленно возвращает управление. Выполняется почти мгновенно. Менеджер затем извлекает задание из очереди и копирует данные в кэш или на диск. После завершения копирования вызывает CompletionRoutine.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #18 : Июнь 06, 2012, 17:12 »

Ну вот, это др дело. Спасибо за разъяснения
Записан
Alex_C
Гость
« Ответ #19 : Июнь 07, 2012, 21:44 »

Спасибо большое за информацию. Теперь бы как бы все это к Qt привязать, да еще на кроссплатформенность перевести ))) Хотя бы с Линукс. Потому как есть весьма экстремальная задача - есть некое устройство под управлением винды или линукса. Питание - не устойчивое - нет упс и т.п. Нужно по максимальности обеспечить сохранность принимаемой записываемой информации на диск. Т.е. устройство когда снова заработает должно перезапросить не записанный на диск кусок. Т.е. как раз о чем разговор.
Записан
DmitryM
Гость
« Ответ #20 : Июнь 07, 2012, 22:08 »

Спасибо большое за информацию. Теперь бы как бы все это к Qt привязать, да еще на кроссплатформенность перевести )))
Для POSIX систем есть aio.h.
Сделать обертку над WinApi и POSIX.
Записан
CJ1
Гость
« Ответ #21 : Июнь 08, 2012, 07:18 »

Цитировать
Ну что Вы много ссылок знаете - я ж не спорю  Но, возможно, было бы лучше если бы простыми словами пояснили как и в какой момент эта ф-ция вызывается. А то товарищи уверенно путают асинхронку с кешированием

Да никто ничего не путает, это просто кто то затронул вопрос про кэширования, вот и понеслось, читайте все сообщения внимательно!

Я уже давно решил свой вопрос если что, еще после первого ответа мне...
Записан
Alex_C
Гость
« Ответ #22 : Июнь 08, 2012, 20:00 »

Я уже давно решил свой вопрос если что, еще после первого ответа мне...

Да кроме Вашего вопроса, есть еще и просто интерес )) Да и поделиться информацией))
Записан
CJ1
Гость
« Ответ #23 : Июнь 10, 2012, 09:51 »

Цитировать
Да кроме Вашего вопроса, есть еще и просто интерес )) Да и поделиться информацией))

Понятно, а я думал, это все мне пытаются чтото объяснить )) Веселый Веселый Веселый
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.152 секунд. Запросов: 22.