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

unix线程如何执行程序

发布时间:2023-02-06 13:40:56 所属栏目: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();
 
  ***********
 
  }
 

(编辑:PHP编程网 - 钦州站长网)

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

    推荐文章