Библиотеки: File Mapping без DLL - страница 2

 

Алекс, а как освободить память если файл больше не нужен?

ну чтоб не отгребать меги и гиги ОЗУ, а то ведь файлов то может быть много.


 

CloseHandle помогает?
 
sergeev:

CloseHandle помогает?

CloseHandle вызывается внутри Close(), но это не приводить к освобождению памяти, и переоткрывщись (без создания) можно получить сохранённую инфу.

А это означает что ОЗУ занята.

void CMemMapFile::Close()
  {
   if(m_hmem!=NULL) CloseHandle(m_hmem); m_path=""; m_hmem=NULL; m_size=0; m_pos=0; m_mode=-1; // закрываем хендл
  }
 

Думаю для гарантированного освобождения памяти лучше будет менять размер файла на 0.

Есть же Grows для увеличения размера, добавить Delete для убийства файла через зануление распределённой памяти.


 

Спасибо. Очень нужная штука.

И, возможно, вопрос не в тему: File Mapping, наверное, можно приспособить для того, что бы использовать внешнюю генетику (скажем, запущенный в терминале скрипт) вместо штатной при оптимизации?


 
joo:

Спасибо. Очень нужная штука.

И, возможно, вопрос не в тему: File Mapping, наверное, можно приспособить для того, что бы использовать внешнюю генетику (скажем, запущенный в терминале скрипт) вместо штатной при оптимизации?


Разве что полуавтомат, всё равно кто то должен запускать тестер и останавливать его (это если ты намерен пользовать клауд).

ЗЫ а без клауда нет смысла и огород городить с тестером.

 
Urain:

CloseHandle вызывается внутри Close(), но это не приводить к освобождению памяти, и переоткрывщись (без создания) можно получить сохранённую инфу.

я думаю. что она остается там до момента, пока кто то её перепишет.  У меня такое бывало. Пишущее приложение закрывает хендл а читающее еще нет. Но данные читать может. Но после некоторых операций в винде данные в файле меняются

А это означает что ОЗУ занята.

не уверен.
 

joo:

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

если вы используете файлы для хранения промежуточных данных, то конечно можно.  Главное сбрасывать данные на диск в каких то реперных точках, а то если что случится, то инфа ведь потеряется безвозвратно.
 
sergeev:

я думаю. что она остается там до момента, пока кто то её перепишет.  У меня такое бывало. Пишущее приложение закрывает хендл а читающее еще нет. Но данные читать может. Но после некоторых операций в винде данные в файле меняются

не уверен.
Наверно нужно как то гарантированно проверить. Вот только пока не знаю как.
 
Urain:

Разве что полуавтомат, всё равно кто то должен запускать тестер и останавливать его (это если ты намерен пользовать клауд).

ЗЫ а без клауда нет смысла и огород городить с тестером.

Да, с клаудом проблема...

Ну я и имел ввиду, что пользователь запускает скрипт на чарте и врукопашную запускает оптимизацию в тестере (скрипт начинает "подсовывать" нужные переменные через File Mapping оптимизируемому эксперту). А как, когда, и при каких условиях останавливать оптимизацию это уже другой вопрос (например, эксперт получает флаг "готово" и начинка эксперта перестает работать, поэтому оставшиеся прогоны тестер будет делать в холостую - а значит быстро прогонит оставшиеся прогоны)

Как то так.

Причина обращения: