仅使用堆栈变量终止线程是否安全?

Is it safe to kill thread using only stack variables?

我有一个 Fortran 子例程。启动后会运行很长时间。

现在,我想编写一个程序,在线程中从 C++ 调用 fortran 子例程。 当用户请求时,线程应该停止(或取消)。 但是子程序不支持任何方法来终止计算运行.

据我所知,该子例程仅使用堆栈变量(无分配)。 子例程由 windows(.lib 文件) 的静态库给出。

在这种情况下,我可以假设杀死子程序线程不会导致资源泄漏等问题吗?

仅供参考,这是 运行 环境:

一般来说这是不安全的 -- 除了内存之外,线程还可以获得其他资源。例如,它可以锁定一个互斥量,如果您在互斥量被锁定时终止线程,则互斥量将永远保持锁定状态,结果可能是其他线程将死锁,永远等待获取互斥量。如果你真的没有办法让线程退出 cleanly/voluntarily,那么唯一安全的方法是生成一个子进程,运行 子进程中的例程。如果必须,您可以安全地终止子进程,因为 OS 将自动清理子进程分配的所有资源。