首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 计算机考试 > 等级考试 > 复习指导 >

C语言中创建多个线程的方法

2008-11-07 
创建线程和写线程函数的方法

    在工作中我们经常会遇到要建立多个线程,以此方便于我们可以同时执行多个事件。  

    在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, 定义线程函数:

  //函数的定义

  static DWORD WINAPI DetectCar(LPVOID lpParameter); //一般用静态函数

  //remark:由于线程函数是静态函数,如果要在函数中用到对象,必须通过

  //函数的实现

  /***************************************************

  *作者:万田

  *时间:2007-13-03

  *函数: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();

  ***********

  }

  return true;

  }

3COME考试频道为您精心整理,希望对您有所帮助,更多信息在http://www.reader8.com/exam/

热点排行