MATLAB® использует функцию операционной системы Windows® под названием change notification handles, чтобы обнаружить, когда файлы в связанной папке изменяются. При определенных обстоятельствах Windows не удается предоставить MATLAB допустимый или быстро реагирующий Указатель Уведомления об Изменении. Эти три наиболее распространенных причины для недопустимых или безразличных указателей уведомления об изменении:
Windows исчерпал свое предоставление указателей уведомления.
Заданная папка находится в файловой системе, которая не поддерживает уведомление об изменении. (Синтаксис файловый сервер TAS, файловый сервер Samba и много файловых серверов NFS, как известно, имеет это ограничение.)
Задержка сетевого или файлового сервера задерживает прибытие уведомления об изменении так, чтобы изменения не были обнаружены на своевременной основе.
Когда 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;
Иногда, изменяя вашу систему удаленная политика пути не является эффективной при предотвращении проблем, связанных с кэшированием удаленной файловой системы или сетевой задержкой. Если 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');