Timer event
-
Dann haengt das ganze doch in einer For schleife und der Programm Fluss wird beeintraechtigt oder etwa nicht ? kannst du es vielleicht etwas genauer erklaeren habe damit noch nicht allzuviel gemacht.
-
void timeed() { bool inc(true); for(;;) { global_var += inc ? 5 : -5; inc = !inc; sleep(10); //hier wird der Thread schlafen gelegt und benötigt somit zwischenzeitlich keine resourcen } }Du musst natürlichden thread erstmal starten. Da das aber von OS & Bibliotek abhängig ist kann dir hier keiner /die/ Lösung geben. Das starten des Threads und das Locking (die Vorkehrung dass die Variable nicht von 2 Threads gleichzeitig geändert wird) musst du also entsprechend selbst ergänzen.
Der Thread läuft immer in der Schleife, erhöht/erniedrigt die Variable und legt sich dann erstmal wieder schlafen. Dadurch braucht er auch erstmal keine CPU-Zeit mehr. Das Hauptprogramm läuft unabhängig davon weiter
-
Hoert sich alles sehr schwierig an , hast du nen Link fuer mich wo das Ganze schritt fuer schritt erklaert wird ?
-
Toa schrieb:
Hoert sich alles sehr schwierig an , hast du nen Link fuer mich wo das Ganze schritt fuer schritt erklaert wird ?
Ich hab einen:
-
Perfect danke , eine frage noch wie schaffe ich es das der t1 thread 10 minuten durchlaueft ? Also in t1 soll der wert fuer 10 min um 5 angehoben werden
eventuell so ?
#include <iostream> #include <boost/thread/thread.hpp> using namespace std; void foo() { int var; var + 5 ; sleep (10 min); var - 5 ; } int main() { boost::thread t1(&foo); bar(); }wuerde das so klappen ?
-
Das hat dir darthdespotism doch oben gezeigt

-
Nur das Sleep in Millisekunden angegeben wird oder etwa nicht also sind es bei ihm nur 10 millisekunden keine 10 minuten ausserdem wird der wert auch wieder nicht rumtergesetzt oder ?
-
void timeed() { bool inc(true); for(;;) { global_var += inc ? 5 : -5; ///Wenn inc true ist, wert um 5 erhöhen, sonst um 5 senken. inc = !inc; //Inc auf den jeweils anderen wert setzen (true -> false & false -> true) sleep(10); //hier wird der Thread schlafen gelegt und benötigt somit zwischenzeitlich keine resourcen } }Und ja, die zeit war in milisekunden angegeben, aber so schwer wird das umrechnen ja nicht sein, oder?

-
Also mal denkhilfe:
1 Sek: 1000Millsekunden
1 Min: 60 Sekunden10 Min ... na??? kommst drauf??
10*1000*60= 600000 millsekunden.. ui das war schwer;)

-
Hui, wie fein. Threads ohne Synchronisierung.
Tip: lass das mit den Threads, und sieh zu dass du es anders gebacken bekommst.
-
Also das klappt so alles nichts , bei boost threading muss man irgendwelche libs und files einbinden die zu allem übel auch noch falsche Header haben und alles doof .. Will einfach nicht klappen jemand anderes eine Idee
-
Toa schrieb:
Also das klappt so alles nichts , bei boost threading muss man irgendwelche libs und files einbinden die zu allem übel auch noch falsche Header haben und alles doof .. Will einfach nicht klappen jemand anderes eine Idee
...für Boost.thread musst man libboost_thread linken und boost/thread.hpp einbinden. Wo ist da das Problem? Oo
-
Woher bekomm ich das hab ma gegoogelt und da bekomm ich ein mega pack an files und wenn ich die Thread linke muss die wiederrum mit einer Config gelinkt sein etc
-
Toa schrieb:
Woher bekomm ich das hab ma gegoogelt und da bekomm ich ein mega pack an files und wenn ich die Thread linke muss die wiederrum mit einer Config gelinkt sein etc
Es gibt eine config.hpp, aber an der musste ich bisher weder was verändern, noch die explizit dazulinken.
Am besten liest du dir mal die Anleitung durch wie man boost unter windows kompiliert und benutzt: http://boost.org/more/getting_started/windows.html
-
Das klappt bei mir alles nicht schon recht nicht mit #include < > ich muss " nehmen damit er überhaupt die thread file findet und dann hat er Probleme die config und anderen files zu finden
-
Du musst den Ordner mit den boost:: Headerns schon zum Include-Path hinzufügen.
-
Reicht es denn nicht wenn die die thread.hpp include die anderen files sind doch in der thread.hpp includet ...
..Edit : kannst du vielleicht ein leeres Projekt machen die boost files adden und hochladen ? das wäre super weil bei mir will und will es nicht klappen
-
http://www.savefile.com/files/935472
Funktioniert bei mir
EDIT://
#include <iostream> #include <boost/thread.hpp> using namespace std; int main() { cout << "Hello world!" << endl; return 0; }EDIT://
Jedenfalls findet er sowohl das include als auch die Lib
-
Irgendwie versteh ich das ganze nicht, ich hab die ganzen Boost files und die tu ich einfach in den ordner wo der include path hinzeigt compilier und er meint cannot find lboost_thread ( ld.exe) . Muss ich irgendwie was compilieren ich kann doch die ganzen files nicht zu meinem Projekt hinzufügen , gibt es nicht eine andere weiße das mit den Threads zu machen außer boost wo man nichts hinzufügen muss ?
-
Du sollst die boost-Header nicht in den include-Path kopieren!
Du must den Inckude-Path so umstellen dass er auch auf die boost-Header zeigt und den Libpath, dass der auch auf die boostLibs zeigt.
Was für eine IDE hast du eigentlich?