加入收藏 | 设为首页 | 会员中心 | 我要投稿 好传媒网 (https://www.haochuanmei.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Unix > 正文

unix线程如何执行程序

发布时间:2023-01-09 14:01:03 所属栏目:Unix 来源:互联网
导读: 把你需要调用的程序(函数,函数输入参数等)写好以后unix线程切换,在创建线程createthread(。。。)时,线程就会执行指定的函数程序。
举例,下面就是创建线程,并由线程执行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();

***********

}

(编辑:好传媒网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章