簡體   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