2015-10-30 3 views
3

В соответствии с http://www.mathworks.com/help/matlab/matlab_env/stop-execution.html, Ctrl + C не работает хорошо для остановки выполнения файлов, которые работают долгое время, или для создания встроенных модулей или MEX-файлов, которые работают долгое время. Почему это? Я хотел бы узнать больше об основных причинах, а затем просто поверхностное описание того, что я могу ожидать. Также существует альтернатива Cmd +. и Ctrl + Break лучше работают? Зачем?В Matlab, когда Ctrl + C не работает и почему?

ответ

5

Я бы предположил, что это связано с тем, что принудительное завершение потока, как вы, кажется, может оставить ваше приложение в недопустимом состоянии, в том числе не освобождать собственные ресурсы, которые хранятся в ваших файлах MEX, таких как память и т. Д. (MEX-файлы сопоставляются в том же пространстве памяти, что и MATLAB). Чистый код MATLAB может быть прерван, потому что в этом случае MATLAB контролирует все ресурсы.

Тем не менее, это возможно для MEX файлы, которые будут прерваны, набрав CTRL + C (или другие механизмы), но они должны быть разработаны специально для этого с помощью этих undocumented functions:

bool utSetInterruptEnabled(bool); 
bool utIsInterruptPending(void); 
+0

+1 это ответ верно. В дополнение к этому: В окне команд инициируется «Cntrl + C». Если окно команд не отвечает, то любой вход, исходящий из него, будет в лучшем случае обработан с задержкой или просто проигнорирован. –

Смежные вопросы