C# 需要了解_set_security_error_handler()的帮助吗
所以,我一直在读这篇文章: 我想定义我的自定义处理程序。但是,我不确定我是否很好地理解了机制。调用用户定义函数(例如,_set_security_error_handler()的参数)后会发生什么?节目结束后还会继续吗?如果是这种情况,是否可以只终止当前线程(假设它不是应用程序的主线程)。好的,每个线程都有自己的堆栈,因此如果线程的堆栈损坏,应用程序的其余部分不应受到影响 最后,如果确实可以只终止当前的执行线程,那么这样的操作会导致哪些潜在问题C# 需要了解_set_security_error_handler()的帮助吗,c#,c++,multithreading,C#,C++,Multithreading,所以,我一直在读这篇文章: 我想定义我的自定义处理程序。但是,我不确定我是否很好地理解了机制。调用用户定义函数(例如,_set_security_error_handler()的参数)后会发生什么?节目结束后还会继续吗?如果是这种情况,是否可以只终止当前线程(假设它不是应用程序的主线程)。好的,每个线程都有自己的堆栈,因此如果线程的堆栈损坏,应用程序的其余部分不应受到影响 最后,如果确实可以只终止当前的执行线程,那么这样的操作会导致哪些潜在问题 我试图在一个非托管C++ DLL中完成这一切,我
我试图在一个非托管C++ DLL中完成这一切,我想在我的C代码中使用。 < P>文档状态: 处理缓冲区溢出后,应终止线程或退出进程,因为线程堆栈已损坏 考虑到这一点,您似乎确实可以简单地终止线程。但是,您可以询问这会导致什么问题。TerminateThread的文档讨论了终止线程可能导致的以下问题:
- 如果目标线程拥有关键部分,则不会释放该关键部分
- 如果目标线程正在从堆中分配内存,则不会释放堆锁
- 如果目标线程在终止时正在执行某些kernel32调用,则线程进程的kernel32状态可能不一致
- 如果目标线程正在操作共享DLL的全局状态,则DLL的状态可能会被破坏,从而影响DLL的其他用户