我在 Windows 7 下有一个多线程应用程序。
当用户在命令行的角落按“X”、“Ctrl+C”、关闭操作系统等时,我需要正确完成具有打开的描述符、连接等的线程中的作业。
我为 SetConsoleHandler 设置了一个处理程序,它为其他线程设置适当的标志以正确完成它们的工作。但是所有这些都被中断,并且 y 以代码 0xc000013a 退出。有时甚至我的处理程序也没有时间设置标志。
当我尝试在 atexit 处理程序中执行相同的操作时,同样的问题仍然存在。
为什么即使在中断处理程序期间所有线程都停止?我怎样才能避免这种情况并让我所有的线程完成他们的工作?