创建新线程(C,Windows)

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().什么是线程的重点?我的意思是,我在这里很困惑.

我想要做的是调用该线程检查数据库状态,并在我继续我的程序,调用其他函数时保持该线程.

我究竟做错了什么?请发布一个示例代码段.

谢谢

Gre*_*ill 6

没有WaitForSingleObject,你的调用SomeOtherFunction()可能会很快返回,程序退出之前新线程甚至有机会运行一次.

当C程序从其main()函数返回时,运行时系统会exit()为您调用.即使其他线程试图同时运行,这也会强制退出程序.这与其他语言(例如Java)形成对比,其中退出主线程将不会退出进程,直到所有其他(非守护进程)线程也完成运行.