Wie man ein Thread in einer Endlosschleife
In einem meiner Vorhaben benötige ich zum ausführen von zwei Vorgängen( Öffnen & Schließen Operationen ) gleichzeitig(d.h. parallel/gleichzeitig). Ich habe zwei threads für die jeweiligen Vorgang wie dieser:
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);
}
}
Hier bin nicht in der Lage zu laufen die Fäden kontinuierlich. Ich habe versucht einen alternativen Weg, wie diese:
void CMyProject : OnbnClickedOpen()
{
while( 1 )
{
//Code for Open Operation..
}
}
void CMyProject : onbnClickedClose()
{
while(1)
{
//Code for Close Operation..
}
}
Mit diesem kann ich entweder die Offene Operation Kontinuierlich oder schließen-Betrieb Kontinuierlich, aber nicht beide auf Zeit.
Bitte Sugest/führe mich, wie dies zu tun..
Dank.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bewegen Sie den
while
Schleife in die thread-Funktionen:Das problem ist, dass Sie anrufen, die unendliche
while(1)
Schleife innerhalb der main-thread selbst, nicht in diesen separaten threads. Also, sobald Sie geben diese unendliche, während auf dem Haupt-thread, es hält es läuft, und nicht ausführen jedem anderen code.Sollten Sie Ihre unendliche Schleifen in den entsprechenden threads, wickeln den gesamten code in der while-Schleife wird es ermöglichen, unendlich ausgeführt, aber getrennt von der Haupt-thread. Dafür ist die Ausführung der main-thread nicht blockiert werden.
:*D, Sie es versäumen, kann zu einer Endlosschleife hook-up verwenden, der den Prozessor und verbrauchen Ressourcen Ihres Computers (RAM/mem/..). hintergrund Arbeitnehmer ausgelegt werden, für einige bestimmte lange Zeit raubende Aufgabe, die macht seinen job, wie eine endlose Schleife. Weil es weiterhin seine Aufgabe, alle die Zeit, Ihre computer 's e.g PnP-Geräte kann fehlschlagen, um Ihre Stände in Ihrem computer, Sie erhalten smacked unten, und Ihr computer manchmal friert sich, bis der laufende task beendet seine Arbeit. Also der hintergrund-thread enthalten muss, die while-Schleife nicht die while-Schleife enthalten hintergrund-Arbeiter.