Поиск и устранение неполадок указателей уведомлений об изменениях Windows

MATLAB® использует Windows® функция операционной системы change notification handles для обнаружения изменений файлов в связанной папке. При определенных обстоятельствах Windows не предоставляет MATLAB действительный или отзывчивый указатель на уведомление об изменении. Три наиболее распространенные причины недействительных или неответственных указателей на уведомление об изменении:

  • Windows исчерпала свой запас указателей на уведомления.

  • Указанная папка находится в файле системе, которая не поддерживает уведомление об изменении. (Синтаксис файлового сервера TAS, файлового сервера САМБА и многих файловых серверов NFS, как известно, имеет это ограничение.)

  • Задержка сетевого или файлового сервера задерживает поступление уведомления об изменении, чтобы изменения не обнаруживались своевременно.

Когда MATLAB не может получить допустимый или отзывчивый указатель на изменение уведомления, он не может автоматически обнаружить изменения файлов и папок. Например, новые функции, добавленные в затронутую папку, могут быть не видны, а измененные функции в памяти могут не перезагружаться.

Управление тем, как MATLAB обнаруживает изменения в файлах и папках

Если MATLAB не может обнаружить изменения в файлах и папках из-за недопустимых или неответственных указателей на изменения, можно управлять тем, как MATLAB обнаруживает изменения в папках.

Если ваша файловая система обновляет временные метки папки при добавлении файлов в папки, можно задать политику удаленного пути системы для обнаружения изменений путем тестирования временных меток папок. Для этого включите эти команды в startup.m файл. Для получения дополнительной информации о создании startup.m файл, см. «Опции запуска» в файле запуска MATLAB.

system_dependent('RemotePathPolicy', 'TimecheckDir');
rehash path;
Вы можете заметить снижение эффективности из-за времени, необходимого для проверки временных меток.

Если ваша файловая система не обновляет временные метки папки (такие как файловая система NT), можно задать системную политику удаленного пути для обнаружения изменений путем повторного чтения затронутых папок с частыми интервалами. Для этого включите эти команды в startup.m файл.

system_dependent('RemotePathPolicy', 'Reload');
rehash path;
Вы можете заметить значительное снижение эффективности из-за времени, необходимого для повторного чтения папок.

Чтобы определить, как MATLAB обнаруживает изменения в папках, используйте эту команду:

system_dependent('RemotePathPolicy', 'Status');

В некоторых случаях обнаружение новых файлов или измененных файлов в папках, затронутых недопустимыми или неответственными указателями на изменение, не требуется. Если обнаружение изменений не требуется, для обеспечения максимальной эффективности можно отключить системную политику удаленного пути. Для этого включите эти команды в startup.m файл.

system_dependent('RemotePathPolicy', 'None');
rehash path;

Функции clear из памяти

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

Настройте предупреждения указателя на уведомление об изменении

Чтобы проанализировать, на какие папки влияют недопустимые или не отвечающие указатели уведомлений об изменениях Windows, можно настроить количество предупреждающих сообщений, выдаваемых Windows. Для этого включите одну из этих команд в startup.m файл. Для получения дополнительной информации о создании startup.m файл, см. «Опции запуска» в файле запуска MATLAB.

  • Отображать предупреждающие сообщения для всех недопустимых или неответственных указателей уведомлений об изменениях.

    system_dependent('DirChangeHandleWarn', 'Always');

  • Отображать только первое предупреждающее сообщение о недопустимых или неответственных указателях уведомлений об изменениях.

    system_dependent('DirChangeHandleWarn', 'Once');

  • Никогда не отображать предупреждающие сообщения о недопустимых или неответственных указателях уведомлений об изменениях.

    system_dependent('DirChangeHandleWarn', 'Never');

Чтобы определить, когда Windows предупреждает о недопустимых или неответственных указателях на изменение, используйте эту команду.

system_dependent('DirChangeHandleWarn', 'Status');

См. также

|

Похожие темы