C技巧:VC中创建多个线程的方法
我们经常遇到需要设置多个线程,这样我们就可以同时执行多个事件2。考试也是VC开发中的一个基础。虽然用了很多次,但是经常忘记。
在VC中,无非就是创建线程和编写线程函数
1、创建线程:
#include
在MFC中,通常在OnInitDialog ()
/Define参数下创建一个线程:SerialControl
// -变量函数初始化调用区。
m _ serial control-> Create(NULL,\"aa\ ",WS_CHILD,CRect(0,0,0,0),this,2,NULL);
m _ serial control-> InitAllSerialPort();
///-
HANDLE hthread 1 = CreateThread(NULL,0,DetectCar,(LPVOID)SerialControl,0,NULL);
close handle(hthread 1);//这里关闭线程的句柄,但不代表关闭线程。当程序退出时,线程关闭。
参数描述:
Handle CreateThread(
LP security _ attributes LP thread属性,//必须为NULL
DWORD dwStackSize,//一般为0,表示堆栈与外部大小相同
LP thread _ start _ routine LP start address,//线程函数名
LPVOID lpParameter,//传递给线程函数的参数。如果有多个参数,自定义结构
DWORD dwCreationFlags,//0表示线程创建后立即启动线程。如果不是立即启动,需要调用ResumeThread函数
lpd word lpThreadId);//用于标记线程名称
2、定义线程函数:
/函数定义
静态dword WinAPI detect car(lpvoid LP parameter);//一般使用静态函数
//备注:由于线程函数是静态函数,如果要在函数中使用对象, 必须通过
//function
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
DWORD WINAPI CISSDlg::detect car(LPVOID LP parameter)
{
TRACE(\ " Thread detect car正在运行\r\n\ ")实现;
CSerialControl * s control =(CSerialControl *)LP parameter;
//define:记录哪条路是车
int Carexit = 0;
while(TRUE)//永远这样做
{
//get:哪个路出口车
Carexit = s control-> m _ grouddetector 1。care xists();
* * * * * * * * * * * *
}
返回true
}
0条评论