Thread in Endlosschleife starten
-
Hallo,
ich brauche eure Hilfe. Und zwar möchte ich einen Thread in einer Endlosschleife starten, ihm z.B. 30ms Zeit geben und dann wieder in die Schleife zurückkehren.
while(1){ .... .... CreateThread hThread.... .... ....} hThread{ ... ... return 0;}
Der Thread soll pro Schleifendurchlauf einmal aufgerufen werden. Bei mir wird er aber nur ein einziges mal aufgerufen und dann nie wieder. Muss ich da für jeden Durchlauf einen neuen Thread erzeugen? Das wären ja dann unendlich viele.
Ich bin über jede Hilfe dankbar!
-
Was soll der Sinn dieser Aktion sein? Eigentlich lagert man solche Endlosschleifen in Threads aus. Bei deinem Beispiel würdest du dir ganz schnell sehr viele Threads anlegen, die, wenn sie nicht gleich wieder returnieren, eine Menge Ressourcen fressen.
Pack doch die Endlosschleife in einen separaten Workerthread und pack auch die Wartefunktion in die Endlosschleife.
-
Naja, diese Threads sollen nur mal kurz nen Wert abfragen und mit diesem rechnen. Dieser Wert wird aber aus einer Variable abgefragt die schon im main Thread benutzt wird. Mittlerweile habe ich alles in einem Thread gemacht, deswegen ist es eigentlich schon egal, aber so wie es jetzt ist, ist es keine gute Lösung.
-
laura84 schrieb:
...nur mal kurz nen Wert abfragen und mit diesem rechnen.
Für nur mal kurz halte ich einen extra Thread für Overkill...
-
Ich meinte damit dass ich ihm dafür ca. 30ms Zeit geben würde. Der Wert den er errechnen würde soll auch immer wieder ausgegeben werden und ständig aktualisiert werden, deswegen ja auch eigentlich die Endlosschleife.
So wie es jetzt gelöst ist mache ich dafür auch keinen neuen Thread auf, aber alles ist verdammt langsam deswegen. Den Thread bräuchte ich deswegen weil ich auf die selbe Variable zugreife wie der main Thread das ständig in seiner Endlosschleife tut.
-
Meinst Du die Berechnung wird durch einen anderen Thread schneller?
Warum braucht man für den Zugriff auf eine Variable in Deiner Routine einen Thread?Alleine wenn zeitgleich auf Variablen zugegriffen wird musst Du an Synchronisation denken! Das bremst wieder.
Erkläre erstmal was Dein wirkliches Problem ist, dann kann man Dir evtl. auch besser helfen.