根据http://www.mathworks.com/help/matlab/matlab_env/stop-execution.html,Ctrl + C不能很好地停止执行长时间运行的文件,或者调用运行时间很长的内置函数或MEX文件。这是为什么?我想更多地了解潜在的原因,然后只是对我的期望的肤浅描述。另外,替代Cmd +。和Ctrl + Break真的更好吗?为什么?
答案 0 :(得分:5)
我猜这是因为强制线程终止,因为你似乎建议可能使你的应用程序处于无效状态,包括不释放你的MEX文件所保存的本机资源,如内存等。(MEX文件映射在与MATLAB相同的存储空间)。纯MATLAB代码可以被中断,因为在这种情况下,MATLAB可以控制所有资源。
也就是说,可以通过键入CTRL + C(或其他机制)来中断MEX文件,但必须专门针对那些使用这些undocumented functions进行设计:
bool utSetInterruptEnabled(bool);
bool utIsInterruptPending(void);