won*_*rer 4 c windows multithreading
好的,我在这里有点困惑.以下代码有效:
HANDLE CreateSideThread()
{
DWORD dwGenericThread;
HANDLE hThread1 = CreateThread(NULL, 0, CallBackFunc, NULL, 0, &dwGenericThread);
return hThread1;
}
int main()
{
HANDLE Thread1;
Thread1 = CreateSideThread();
WaitForSingleObject(hThread1, INFINITE);
SomeOtherFunction();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
该程序做其他事情,但你明白了.它基本上创建一个新线程并执行它在CallBackFunc中的任何内容(这是一个检查db状态的无限循环).现在,如果我删除WaitForSingleObject(),那么程序甚至不会尝试一次CallBackFunc并执行SomeOtherFunction().什么是线程的重点?我的意思是,我在这里很困惑.
我想要做的是调用该线程检查数据库状态,并在我继续我的程序,调用其他函数时保持该线程.
我究竟做错了什么?请发布一个示例代码段.
谢谢
没有WaitForSingleObject,你的调用SomeOtherFunction()可能会很快返回,程序退出之前新线程甚至有机会运行一次.
当C程序从其main()函数返回时,运行时系统会exit()为您调用.即使其他线程试图同时运行,这也会强制退出程序.这与其他语言(例如Java)形成对比,其中退出主线程将不会退出进程,直到所有其他(非守护进程)线程也完成运行.