如何在VC++中创建线程

Aar*_*ron 8 c++ windows visual-studio-2008

  • Linux下用C编程时,我倾向于使用POSIX Threads.

  • 没有MFC

题:

那么我如何在VC++中创建线程?

在win32下查找有关线程的更多信息?

编辑:

  • 简要说明

我喜欢stackoverflow - 学生最好的资源!

问候

gal*_*ets 10

如果您正在寻找与平台无关的方法,请使用boost

还有beginthread()和beginthreadex()函数.两者似乎都是对Win32 API的补充,在某种意义上,在许多用例中,你仍然需要调用一些Win32函数(例如beginHrelex的CloseHandle).所以,如果你对平台兼容性不太关心,你也可以削减前戏并使用CreateThread().

这里记录了Win32线程处理:http://msdn.microsoft.com/en-us/library/ms684852(VS.85).aspx

[edit1]示例:

DWORD WINAPI MyThreadProc( void* pContext )
{
    return 0;
}

HANDLE h = CreateThread( NULL, 0, MyThreadProc, this, 0L, NULL );
WaitForSingleObject(h, TIME); // wait for thread to exit, TIME is a DWORD in milliseconds
Run Code Online (Sandbox Code Playgroud)

[edit2] CRT&CreateThread():

每个MSDN:

调用C运行时库(CRT)的可执行文件中的线程应使用_beginthreadex和_endthreadex函数进行线程管理,而不是CreateThread和ExitThread; 这需要使用CRT的多线程版本.如果使用CreateThread创建的线程调用CRT,则CRT可以在低内存条件下终止进程.


Mic*_*urr 3

您不应使用原始 Win32 CreateThread()API。

使用 C 运行时_beginthreadex(),以便运行时有机会设置自己的线程支持。