【发布时间】:2011-04-01 10:12:00
【问题描述】:
我在一个大型代码库中发现了这段代码
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);
}
我的问题是:为什么要使用线程?如果ThreadFunc 中的代码直接在Manager::Crash 中完成,会或多或少是线程安全的吗?如果我消除崩溃,我不愿意进行更改。
【问题讨论】:
-
你从哪里得到这个代码?
-
有趣的思想实验,但这不是一个好标题。 “与主线程相比,在辅助线程上崩溃是否有优势?”
-
@quixoto:好标题,已修复。 @Maz:为什么?
-
嗯...为什么不直接调用 exit() 或 terminate() 呢?这是关闭服务器的极其复杂的代码......
标签: c++ c multithreading winapi crash