Thread, wie man so was realisieren kann?
-
Hallo alle,
ich habe die Daten von port(RS232). Die read-Routine mit while(1)-endlose-schleife habe ich in einer KlasseMethode(readUndStoreData())eingepackt. Die Daten ist je sec blockweise kommt. Meine Frage ist, wie ich während readUndStoreData() andere KlasseMethode aufrufen kann, hier z.b. getNr().
Anderse Wort, wie steue ich while(1)-endlose-schleife (zb. je 5 sec.). dass andere aufruf durch lassen.Ich habe googlet und auch hinweise bekommen, dass man so was mit Thread realisieren kann.
Da ich keine Ahnung von Thread habe und bitte ich um Hilfe( Ich arbeite unter VM SUSE Linux10.0 und mit dem Kompiler von GNU ).1. ob ich extra Libraries brauche.
2. kann jemand mir ein paar Beispiel code bzw. links geben
3. gibt es andere alternativ ( zb. ohne Thread )vielen Danke vor dem Computer
#include "test.h" int main() { Test t; t.openAndInitPort(); t.readUndStoreData(); t.getNr(); return 0; }
# include <stdio.h> # include <unistd.h> # include <fcntl.h> # include <termios.h> #include <iostream.h> class Test { public: Test(); ... void readAndStoreData(); int getNr(); ... private: int nr; ... }; // test.cpp Test::Test() { nr = 0; } void Test::readAndStroeData() { while( 1 ) { // hier ist die Data von port gelesen und in memberVariable nr schreiben // zb: read ( fd, buffer, 1 );.....; // nr = (int)buffer[0]; ....; } } int Test::getNr() { return nr; }
-
1. Nein
2. http://www.c-plusplus.net/forum/viewtopic.php?t=39508
3. Ja, mittels async oder event gestäuertem I/O (siehe man: select(2), man: poll(2), epoll etc)
-
Danke für die Antwort.
Ich werde Punkt 2 probieren.