unix线程如何执行程序
举例,下面就是创建线程,并由线程执行DetectCar(.
把你需要调用的程序(函数,函数输入参数等)写好以后unix线程切换,在创建线程createthread(。。。)时,线程就会执行指定的函数程序。 举例,下面就是创建线程,并由线程执行DetectCar(...)函数程序的。: VC中创建多个线程的方法 1, 创建线程: #include 在MFC中通常在OnInitDialog()下面创建线程 //定义参数:SerialControl //------------------变量函数初始化调用区域-------- CSerialControl * m_SerialControl=new CSerialControl(); m_SerialControl->Create(NULL,"aa",WS_CHILD,CRect(0,0,0,0),this,2,NULL); m_SerialControl->InitAllSerialPort(); //------------------------------------------------ HANDLE hThread1=CreateThread(NULL,0,DetectCar,(LPVOID)SerialControl,0,NULL); CloseHandle(hThread1);//此处关闭线程的句柄,但不意味关闭线程,线程在程序退出时关闭 参数说明: HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpThreadAttributes,//必须为NULL DWORD dwStackSize, //一般为0 ,表示堆栈与外部大小相同 LPTHREAD_START_ROUTINE lpStartAddress, //线程函数名称 LPVOID lpParameter, //传递给线程函数的参数,如果为多个,自定义结构体 DWORD dwCreationFlags, //0表示创建线程后立即启动线程,如果不是立即启动需要调用ResumeThread函数 LPDWORD lpThreadId);//用来标记该线程的名称 2, 定义线程函数: //函数的定义 staticDWORD WINAPI DetectCar(LPVOID lpParameter); //一般用静态函数 //remark:由于线程函数是静态函数,如果要在函数中用到对象,必须通过 //函数的实现 /*************************************************** *函数:DetectCar() 说明:检测线程 ****************************************************/ DWORD WINAPI CISSDlg::DetectCar(LPVOID lpParameter) { TRACE("Thread DetectCar is running\r\n"); CSerialControl* SControl=(CSerialControl*)lpParameter; //define:record which road is car int Carexit=0; while (TRUE)//do this forever { //get:which road exit car Carexit=SControl->m_GroudDetector1.CarExists(); *********** } (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |