Code alle Sekunden ausführen
-
Hallo,
wie kann ich es machen, dass ich einen "Thread" in einer Klasse habe, welcher alle sekunden
ausgeführt wird?Kann ich das irgendwie machen?
Vielen Dank,
lg
-
Mit alert() liese sich das unter Linux schön lösen
http://www.pronix.de/pronix-185.htmlAnsonsten kannst du ja einfach den Thread so lange schlafenlegen
bis er wieder drankommt.
-
wenn du windoofs nutzt, dann mit CreateThread bzw. _beginthread. wenn unix oder ein unix-clone, dann geht vielleicht 'pthreads' oder sowas.
-
Und wie geht das grundsätzlich, wie kann ich den Thread machen,
Ich hab da ein grundsätzliches Verständlisproblem, wie ich das machen kann,Oder gibts da eine Link irgendwo?
Vielen Dank,
lg
-
Vllt sagst du erstmal welches Betriebssystem du jetzt hast.
Das Ganze geht leider nicht plattformunabhängig.
Für Linux benutzt du wie bereits erwähnt pthreads
http://www.pronix.de/pronix-24.html
-
Na ja, wie schon gesagt, "reines" C++ bietet das nicht, dazu brauchst du eine externe Bibliothek. In der Regel nutzt du dazu - wie schon erwaehnt - einfach das, was dein Betriebssystem dir bietet. "Schoener" gehts wenn du die Threads benutzt, die boost dir bietet: www.boost.org
-
@Blue-Tiger: Du meintest wohl eher diese Seite:
http://www.boost.org/
-
Storm.Xapek.de schrieb:
@Blue-Tiger: Du meintest wohl eher diese Seite:
http://www.boost.org/whoa, thx
-
Vielen Dank für die Antworten,
ich arbeite mit dem BS Vista bzw XP,lg
-
Nimm Boost, das ist plattformunabhängig...
-
Keine Ahnung wie das geht, kann mir da jemand weiter helfen, i
ich bräuchte ja nur eine Klasse, welche eine Methode hat, welche alle Sekunden mal aufgerufen wird,Das ist ja nichts exotisches, oder,
ich java geht das ganz einfach mit einem TimerTask oder einem Thread und einem Sleep.
-
PollerCPP schrieb:
Thread und einem Sleep.
geht in c++ genauso. mit boost.
-
Kann mir da jemand ein Beispiel geben, wie ich das am Besten machen kann?
Aus der Seite werde ich nicht ganz schlau,
-
PollerCPP schrieb:
Aus der Seite werde ich nicht ganz schlau
Was verstehst Du denn nicht?
#include <boost/thread/thread.hpp> #include <boost/thread/xtime.hpp> #include <iostream> #include <conio.h> // _kbhit( ); void foo( ) { do { boost::xtime time; boost::xtime_get( &time, boost::TIME_UTC ); time.sec += 1; boost::thread::sleep( time ); std::cout.put( 'x' ); } while( true ); } int main( ) { boost::thread my_thread( foo ); while( !_kbhit( ) ) { boost::xtime time; boost::xtime_get( &time, boost::TIME_UTC ); time.nsec += 100000000; boost::thread::sleep( time ); std::cout.put( '.' ); } }
greetz, Swordfish
-
time.nsec += 100000000;
lol public membervariable?
-
boos schrieb:
lol public membervariable?
struct
. Warum nicht?greetz, Swordfish
-
wenn du kein boost verwenden willst, dann guck dir ma die WinAPI-Fkt an:
_beginthreadex (gaaaaaaaaaaaaanz viele parameter - die meisten sind unwichtig ^^) und WaitForSingleObject (handle, zeitinterval)
Bsp.:
//includes (cstring, process, iostream) <- vll mehr ^^ const unsigned __int32 timeVAL (5*1000); //5 Sekunden const HANDLE EXIT_EVENT (CreateEvent (NULL, true, false, NULL)); //event zum beenden unsigned __stdcall FUNKTIONSNAME (void *parameter) { while (WAIT_TIMEOUT == WaitForSingleObject (EXIT_EVENT, timeVAL)) { //tu was ^^ } }; int main (void) { std::string eingabe; //void *PARAMETER (vll nen pointer auf den eingabe-string oder was weiß ich denn ^^) const HANDLE asd (static_cast <HANDLE> (_beginthreadex (NULL, 0, &FUNKTIONSNAME, PARAMETER, NULL, NULL))); //vll braucht man das ja später noch mal ^^ wenn nicht, dann KÖNNTEST du auch _beginthread nehmen - auch, wenn ich dir davon abraten würde... do { cin >> eingabe; } while (eingabe != "exit"); SetEvent (EXIT_EVENT); };
Ich weiß - WinAPI is dreckig, doof und wird von allen verachtet - boost wär besser etc - aber ich mag die WinAPI und deren Fkt
Bye
//edit:
ist zugegeben ein wenig unsauber - aber ich wollt dir auch noch bissl was übrig lassen ;o) (struct übergeben statt globaler variablen, nen lock für den string-pointer - vll noch ne hübsche Klasse (TTimer oder wie au immer) erstellen, damit man bissl komfortabler damit arbeiten kann)Genug gelabert jetzt - hoffe, ich konnte dir helfen ^^
-
Swordfish schrieb:
PollerCPP schrieb:
Aus der Seite werde ich nicht ganz schlau
Was verstehst Du denn nicht?
[cpp]#include <boost/thread/thread.hpp>
#include <boost/thread/xtime.hpp>
#include <iostream>#include <conio.h>
Hallo nochmal,
vielen Dank für die Hilfe,
mit den include- Dateien happerts noch und zwar muss ich mir die wahrscheinlich runterladen und dann in irgendeienn Ordner geben, oder?Meine Frage wäre jetzt, ob ich da richtig bin un un welchen Ordner ich was gebe?
Vielen dank für eure Hilfe,
lg
-
kannst dir einen raussuchen und fügst ihn dann bei den include-pfaden der ide hinzu...
-
keine Ahnung, wie iich in Visual C++ 2005 was hinufüge, kann mir da jemand helfen,
Vielen Dank,
lg
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Compiler- und IDE-Forum verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.