这是在C++中启动线程的正确方法吗?

0 c++ multithreading

这是我用来启动线程的方法,但是我觉得这种方式有任何缺点.

void myFunc()
{
    //code here

}


unsigned int _stdcall ThreadFunction(void* data)
{
    myFunc();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我使用的主要功能:

HANDLE A = (HANDLE)_beginthredex(0,0,&ThreadFunction,0,0,0);
Run Code Online (Sandbox Code Playgroud)

我结束了这个主题CloseHandle(A);.

Som*_*ken 8

如果您有权访问C++ 11,请使用该<thread>库,您无需担心跨平台兼容性:

#include <thread>

std::thread t(&ThreadFunction, nullptr);
Run Code Online (Sandbox Code Playgroud)

要等待线程的执行完成,请使用join():

t.join();
Run Code Online (Sandbox Code Playgroud)

这将阻塞,直到线程应该运行的函数返回.

否则,请使用CreateThread(因为它看起来像是在Windows上)或beginthreadex.

对于POSIX,请使用pthread_create().