定义与开启一个线程的示例:
#include <iostream>
#include <process.h>
#include <windows.h>
using namespace std;
void Thread1(void* para)
{
while (1)
{
Sleep(1000);
cout << "Thread1\n";
}
}
int main()
{
_beginthread(Thread1, 0, NULL);
return 0;
}
或者:
HANDLE handle;
static unsigned int __stdcall StartRecognize(void* para)
{
while (1)
{
}
return 0;
}
handle = (HANDLE)_beginthreadex(NULL, 0, StartRecognize, NULL, 0, NULL);
首先在一个子程序里开了线程之后,线程会按照定义的内容线性执行。开启了线程之后,线程在后台自己跑,程序会继续执行之后的语句。
那么如果在线程内部写入死循环,那么线程就会一直执行。但是需要注意的是,当整个程序结束时,线程也会一起死掉,所以如果要保证线程的持续运行,必须让程序一直在跑。
如果将C++写成的线程相关程序打包成DLL,用Unity调用的话,由于Unity的主程序是一直在跑着的,所以含有死循环的线程开启以后不去管它的话它是不会停止的。
关于退出线程:为了避免线程残留,必须考虑关闭线程的问题。最好的方法就是线程自己return掉,所以在死循环内部最好设立一个flag,一旦达到退出线程的条件,就return。