二级线程与主线程相比是否有优势?

Ari*_*old 4 c c++ crash winapi multithreading

我在一个大型代码库中遇到了这段代码

DWORD WINAPI ThreadFunc (LPVOID lpParam)
{ 
    int *x = 0;
    *x = 1234; // Access violation

    return 0; 
}

void Manager::Crash ()
{
    Log("Received a remote command to crash Server.");

    DWORD dwThreadId, dwThrdParam = 1; 
    HANDLE hThread = ::CreateThread(NULL, 0, ThreadFunc, &dwThrdParam, 0, &dwThreadId);
} 
Run Code Online (Sandbox Code Playgroud)

我的问题是:为什么使用线程?如果代码ThreadFunc是直接完成的,它会或多或少是线程安全的Manager::Crash吗?如果我删除崩溃,我不愿意进行更改.

Rem*_*anu 5

他不想处理发生的异常.收到的原始主题Manager::Crash继续.AV异常不一定终止该过程.虽然在这种情况下不是由__try/__except块处理的事实(注意,是SEH try块,而不是C++ ),然后未处理的第二次机会异常终止该过程.但也许他想强迫Watson/WER 博士进入,或者使用事后调试器启动,或者打破当前的调试器.谁知道...

实际上,我哦!如果主线程确实安装了SEH处理程序,则不会使进程崩溃.QED.

  • 这完全是值得在代码中发表评论的东西. (2认同)