繁体   English   中英

如何在无限循环中运行线程

[英]How to Run a Thread in an Infinite loop

在我的一个项目中,我需要同时运行两个操作(打开和关闭操作)(即并行/同时)。 我为各自的操作创建了两个线程,如下所示:

UINT MyThread1(LPVOID lParam)
{
 // code for Open Operation..
 // other stuffs...

 return(1);
}

UINT MyThread2(LPVOID lParam)
{
 //Code for Close Operation..
 //Other Stuffs..

return(1);
}

void CMyProject : OnbnClickedOpen()
{
   // Here am running OPen Operation Continously..
 while(1) {
 AfxBeginThread(MyThread1,0);
 }
 }

void CMyProject : onbnClickedClose()
{
  //Here am running Close Operation continously...
  while(1) {
  AfxBeginThread(MyThread2,0);
 }
}

这里无法连续运行线程。 我尝试过这样的替代方法:

void CMyProject : OnbnClickedOpen()
{
   while( 1 )
   {
     //Code for Open Operation..
   }
 }

void CMyProject : onbnClickedClose()
{
  while(1)
  {
    //Code for Close Operation..
  }
}

有了这个,我可以连续运行Open Operation或者连续运行,但不能同时运行。

请Sugest /指导我如何做到这一点..

谢谢。

while循环移动到线程函数中:

UINT MyThread1(LPVOID lParam)
{
 // Here am running OPen Operation Continously..
 while(1) {
   // code for Open Operation..
   // other stuffs...
 }

 return(1);
}

UINT MyThread2(LPVOID lParam)
{
  //Here am running Close Operation continously...
  while(1) {
   //Code for Close Operation..
   //Other Stuffs..
  }

return(1);
}

void CMyProject : OnbnClickedOpen()
{
 AfxBeginThread(MyThread1,0);
}

void CMyProject : onbnClickedClose()
{
  AfxBeginThread(MyThread2,0);
}

问题是你在主线程本身内调用无限while(1)循环,而不是在这些单独的线程中。 因此,只要在主线程上输入此无限时,它将继续运行它而不执行任何其他代码。

你应该将无限循环移动到它们各自的线程中,将整个代码包装在while循环中将允许它无限运行,但是与主线程分开。 因此,永远不会阻止主线程的执行。

:* D,你错过了,无限循环可以连接你的处理器使用你的计算机资源(RAM / mem / ..)。 后台工作者将被设计用于某些特定的长时间消耗任务,其工作就像无限循环一样。 因为它一直在继续工作,你的计算机,例如PnP设备可能无法在你的计算机上获得它们的支架; 他们被打倒了,你的计算机有时会自行冻结,直到正在运行的任务完成它的工作。 因此后台线程必须包含while循环而不是包含后台worker的while循环。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM