C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Timeout

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (German)
View previous topic :: View next topic  
Author Message
Shuo
Guest





PostPosted: Wed Sep 15, 2004 2:05 pm    Post subject: Timeout Reply with quote



Hallo zusammen,

ich habe ein kleines timeout Problem. Ich suche eine Funktion, bzw. eine
Idee, wie ich innerhalb einer Funktion, während sie abgearbeitet wird (im
Stack), angehalten werden kann, ohne den ganzen Prozess anzuhalten.
Ich habe mehrere verschieden Objekte, die zu unterschiedlich zeiten einen
solchen timeout aufrufen sollen.

Kann mir jemand einen Tipp geben?!

Vielen Dank!

Yang Shuo

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
Back to top
Mike Podonyi
Guest





PostPosted: Wed Sep 15, 2004 3:12 pm    Post subject: Re: Timeout Reply with quote




"Shuo" <Shuo (AT) gmx (DOT) at> schrieb im Newsbeitrag
news:opsedf3xq1ol6ku5 (AT) localhost (DOT) ..
Quote:
Hallo zusammen,

ich habe ein kleines timeout Problem. Ich suche eine Funktion, bzw. eine
Idee, wie ich innerhalb einer Funktion, während sie abgearbeitet wird (im
Stack), angehalten werden kann, ohne den ganzen Prozess anzuhalten.
Ich habe mehrere verschieden Objekte, die zu unterschiedlich zeiten einen
solchen timeout aufrufen sollen.


Per Multithreading ein Flag setzen die im Hauptthread an bestimmten
Positionen einen "sleep" oder "waitfor" auslösen.

Bei mehr Informationen gäbe es eine bessere Lösung!!!

Bye

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Boris Glawe
Guest





PostPosted: Wed Sep 15, 2004 4:07 pm    Post subject: Re: Timeout Reply with quote



Shuo wrote:
Quote:
Hallo zusammen,

ich habe ein kleines timeout Problem. Ich suche eine Funktion, bzw. eine
Idee, wie ich innerhalb einer Funktion, während sie abgearbeitet wird
(im Stack), angehalten werden kann, ohne den ganzen Prozess anzuhalten.
Ich habe mehrere verschieden Objekte, die zu unterschiedlich zeiten
einen solchen timeout aufrufen sollen.

Kann mir jemand einen Tipp geben?!

Vielen Dank!

Yang Shuo


Der code, den die Methode aufuft muss in einem eigenen Thread laufen.
Notwendiges Know-How: Threadprogrammierung, was alles andere als leicht ist.


Hier der Pseudocode:



void func() {

// mach irgendwas, was parallel zum Rest laufen soll;

}


int main(){

thread *t = new thread(func);

//mach hier das andere , was parallel zum Thread t laufen soll...

}

Startet man einen neuen Thread, dann wird dessen Code parallel zu anderen Codes
ausgeführt. Insbesondere kann man den Thread anhalten, ohne dass der Rest des
Programms hängen bleibt. Das kann ich jetzt leider nicht alles erklären, weil
ich es erstens selbst nicht richtig kann, es ziemlich umfangreich ist und
außerdem auch abhängig von der Platform ist, wie die Lösung genau aussieht.

Grüße Boris

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Christoph Rabel
Guest





PostPosted: Wed Sep 15, 2004 6:51 pm    Post subject: Re: Timeout Reply with quote

Mike Podonyi wrote:
Quote:
"Shuo" <Shuo (AT) gmx (DOT) at> schrieb im Newsbeitrag
news:opsedf3xq1ol6ku5 (AT) localhost (DOT) ..

Per Multithreading ein Flag setzen die im Hauptthread an bestimmten
Positionen einen "sleep" oder "waitfor" auslösen.

sleep ist meistens ein Fehler, waitfor ist der Weg der Wahl!

Quote:
Bei mehr Informationen gäbe es eine bessere Lösung!!!

Das ist mit Sicherheit wahr!

mfg

Christoph

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Shuo
Guest





PostPosted: Wed Sep 15, 2004 8:28 pm    Post subject: Re: Timeout Reply with quote

Am Wed, 15 Sep 2004 17:12:33 +0200 schrieb Mike Podonyi
<mikepodonyi (AT) web (DOT) de>:

Quote:

"Shuo" <Shuo (AT) gmx (DOT) at> schrieb im Newsbeitrag
news:opsedf3xq1ol6ku5 (AT) localhost (DOT) ..
Hallo zusammen,

ich habe ein kleines timeout Problem. Ich suche eine Funktion, bzw. eine
Idee, wie ich innerhalb einer Funktion, während sie abgearbeitet wird
(im
Stack), angehalten werden kann, ohne den ganzen Prozess anzuhalten.
Ich habe mehrere verschieden Objekte, die zu unterschiedlich zeiten
einen
solchen timeout aufrufen sollen.


Per Multithreading ein Flag setzen die im Hauptthread an bestimmten
Positionen einen "sleep" oder "waitfor" auslösen.

Bei mehr Informationen gäbe es eine bessere Lösung!!!

Bye


Das mit dem Flag hab ich nicht wirklich verstanden. Ok..ich kann in der
Funktion einen Thread mit CreatThread starten, aber was soll in diesem
Thread laufen?! Eigentlich ist das nur ein Platzhalter..So was wie ne
Schleife die x sekunden läuft.
Anders formuliert: Ich habe eine Funktion in der ich verschiedene andere
Funktionen aufrufe. Zwischen diesen Funktionen muss eine bestimmte Zeit
vergehen. Die Funktionen können nur von dieser einen Funktionen ausgeführt
werden, kann sie also auch nicht in andere auslagern.
Ich hoffe ich konnte mein Problem schildern.

Schöne Grüsse

Yang
--
Erstellt mit M2, Operas revolutionärem E-Mail-Modul:
http://www.opera.com/m2/

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Shuo
Guest





PostPosted: Wed Sep 15, 2004 8:30 pm    Post subject: Re: Timeout Reply with quote

Am Wed, 15 Sep 2004 18:07:25 +0200 schrieb Boris Glawe
<boris (AT) boris-glawe (DOT) de>:

Quote:
Shuo wrote:
Hallo zusammen,

ich habe ein kleines timeout Problem. Ich suche eine Funktion, bzw.
eine Idee, wie ich innerhalb einer Funktion, während sie abgearbeitet
wird (im Stack), angehalten werden kann, ohne den ganzen Prozess
anzuhalten.
Ich habe mehrere verschieden Objekte, die zu unterschiedlich zeiten
einen solchen timeout aufrufen sollen.

Kann mir jemand einen Tipp geben?!

Vielen Dank!

Yang Shuo


Der code, den die Methode aufuft muss in einem eigenen Thread laufen.
Notwendiges Know-How: Threadprogrammierung, was alles andere als leicht
ist.


Hier der Pseudocode:



void func() {

// mach irgendwas, was parallel zum Rest laufen soll;

}


int main(){

thread *t = new thread(func);

//mach hier das andere , was parallel zum Thread t laufen soll...

}

Startet man einen neuen Thread, dann wird dessen Code parallel zu
anderen Codes ausgeführt. Insbesondere kann man den Thread anhalten,
ohne dass der Rest des Programms hängen bleibt. Das kann ich jetzt
leider nicht alles erklären, weil ich es erstens selbst nicht richtig
kann, es ziemlich umfangreich ist und außerdem auch abhängig von der
Platform ist, wie die Lösung genau aussieht.

Grüße Boris


Hi Boris,

ich hab im Thread vom Mike das Problem nochmal genauer beschrieben...

Danke!
--
Erstellt mit M2, Operas revolutionärem E-Mail-Modul:
http://www.opera.com/m2/

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Shuo
Guest





PostPosted: Thu Sep 16, 2004 7:54 am    Post subject: Re: Timeout Reply with quote

Am Wed, 15 Sep 2004 20:51:56 +0200 schrieb Christoph Rabel
<odie (AT) hal9000 (DOT) vc-graz.ac.at>:

Quote:
Mike Podonyi wrote:
"Shuo" <Shuo (AT) gmx (DOT) at> schrieb im Newsbeitrag
news:opsedf3xq1ol6ku5 (AT) localhost (DOT) ..

Per Multithreading ein Flag setzen die im Hauptthread an bestimmten
Positionen einen "sleep" oder "waitfor" auslösen.

sleep ist meistens ein Fehler, waitfor ist der Weg der Wahl!

Bei mehr Informationen gäbe es eine bessere Lösung!!!

Das ist mit Sicherheit wahr!

mfg

Christoph


Ok, Ich versuch mal mein Problem bisschen näher zu schildern. Ich habe
einen (oderer mehrere) Kleinrechner, der Daten liefert. Ein anderer
Rechner, auf dem die eigentlich Software läuft verwaltet die ganzen
gelieferten Daten und kümmert sich um die Verbindung.
Der Destruktor ruft zwei Funktionen auf, die erst ein TransferDisable
macht und dann die Verbindung trennt. Dieses geschieht alles in einer
Funktion. So, damit ich aber noch anstehende Daten von der Warteschlange
bekommen kann, muss ich kurz warten. Sprich, ich brauch einen timeout, der
nicht den ganzen Prozess schlafen legt, sondern solange wartet, bis die
Zeit abgelaufen ist.
Heißt im endeffekt: Ich habe mehrere Objekte, die zu unterschiedlichen
Zeiten gestartet werden (laufen in einem Prozess). Diese können zu
unterschiedlichen Zeiten gelöscht, bzw. gestoppt werden. Ich benötige
jetzt eine Funktion, oder ne Idee, wie ich, bei der Abarbeitung dieser
Funktion, die die Verbindung zum Kleinrechner trennt, kurz wartet, bevor
sie die noch die anstehenden Funktionen abarbeitet. Dieses "warten" muss
so gestrickt sein, dass die anderen Objekte nicht mit "warten" müssen,
denn Sie werden zu einer anderen Zeit gestoppt oder gelöscht.

Ich hoffe ich konnte mehr Informationen liefern...

Danke im Voraus!

Yang Shuo

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Mike Podonyi
Guest





PostPosted: Thu Sep 16, 2004 9:24 am    Post subject: Re: Timeout Reply with quote


"Shuo" <Shuo (AT) gmx (DOT) at> schrieb im Newsbeitrag
news:opsedxt0emol6ku5 (AT) localhost (DOT) ..
Quote:
Am Wed, 15 Sep 2004 17:12:33 +0200 schrieb Mike Podonyi
[email]mikepodonyi (AT) web (DOT) de[/email]>:


"Shuo" <Shuo (AT) gmx (DOT) at> schrieb im Newsbeitrag
news:opsedf3xq1ol6ku5 (AT) localhost (DOT) ..
Hallo zusammen,

ich habe ein kleines timeout Problem. Ich suche eine Funktion, bzw. eine
Idee, wie ich innerhalb einer Funktion, während sie abgearbeitet wird
(im
Stack), angehalten werden kann, ohne den ganzen Prozess anzuhalten.
Ich habe mehrere verschieden Objekte, die zu unterschiedlich zeiten
einen
solchen timeout aufrufen sollen.


Per Multithreading ein Flag setzen die im Hauptthread an bestimmten
Positionen einen "sleep" oder "waitfor" auslösen.

Bei mehr Informationen gäbe es eine bessere Lösung!!!

Bye


Das mit dem Flag hab ich nicht wirklich verstanden. Ok..ich kann in der
Funktion einen Thread mit CreatThread starten, aber was soll in diesem
Thread laufen?! Eigentlich ist das nur ein Platzhalter..So was wie ne
Schleife die x sekunden läuft.
Anders formuliert: Ich habe eine Funktion in der ich verschiedene andere
Funktionen aufrufe. Zwischen diesen Funktionen muss eine bestimmte Zeit
vergehen. Die Funktionen können nur von dieser einen Funktionen ausgeführt
werden, kann sie also auch nicht in andere auslagern.
Ich hoffe ich konnte mein Problem schildern.


Nimm das mit dem Flag nicht so wörtlich.
Die Lösung liegt bei den SDK Funktionen:
"WaitForSingleObject"
bzw.
"WaitForSingleObjectEx"

Suche in diese Richtung und du wirst wissend.

Bye

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Christoph Rabel
Guest





PostPosted: Thu Sep 16, 2004 10:28 am    Post subject: Re: Timeout Reply with quote

Shuo wrote:
Quote:

Heißt im endeffekt: Ich habe mehrere Objekte, die zu unterschiedlichen
Zeiten gestartet werden (laufen in einem Prozess). Diese können zu

Ich nehme an, du meinst hier das jedes in einem eigenen Thread läuft.
Beachte: Process != Thread.

Quote:
unterschiedlichen Zeiten gelöscht, bzw. gestoppt werden. Ich benötige
jetzt eine Funktion, oder ne Idee, wie ich, bei der Abarbeitung dieser
Funktion, die die Verbindung zum Kleinrechner trennt, kurz wartet, bevor
sie die noch die anstehenden Funktionen abarbeitet. Dieses "warten" muss
so gestrickt sein, dass die anderen Objekte nicht mit "warten" müssen,
denn Sie werden zu einer anderen Zeit gestoppt oder gelöscht.

Ich hoffe ich konnte mehr Informationen liefern...

WaitForSingleObject(Ex) oder WaitForMultipleObjects(Ex) vermutlich. Ganz
schlau bin ich aus deiner Architektur noch immer nicht.

Ich vermute du startest in einen Unterthread an, der irgendwas macht und
erst wenn er fertig ist, willst du mit dem Hauptthread an dieser Stelle
weitermachen.

In diesem Fall ist es eventuell möglich mit PostThreadMessage eine
Nachricht an den Hauptthread zu schicken das du fertig bist und er dich
aufräumen (oder was auch immer) darf.

Weiters bist du hier genaugenommen Offtopic, da Threads rein
betriebssystemspezifisch sind. Eine bessere NG wäre z.B.:

microsoft.public.de.vc

mfg

Christoph

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Andreas Huennebeck
Guest





PostPosted: Thu Sep 16, 2004 11:36 am    Post subject: Re: Timeout Reply with quote

Shuo wrote:

Quote:
Ok, Ich versuch mal mein Problem bisschen näher zu schildern. Ich habe
einen (oderer mehrere) Kleinrechner, der Daten liefert. Ein anderer
Rechner, auf dem die eigentlich Software läuft verwaltet die ganzen
gelieferten Daten und kümmert sich um die Verbindung.
Der Destruktor ruft zwei Funktionen auf, die erst ein TransferDisable
macht und dann die Verbindung trennt. Dieses geschieht alles in einer
Funktion. So, damit ich aber noch anstehende Daten von der Warteschlange
bekommen kann, muss ich kurz warten. Sprich, ich brauch einen timeout, der
nicht den ganzen Prozess schlafen legt, sondern solange wartet, bis die
Zeit abgelaufen ist.
Heißt im endeffekt: Ich habe mehrere Objekte, die zu unterschiedlichen
Zeiten gestartet werden (laufen in einem Prozess). Diese können zu
unterschiedlichen Zeiten gelöscht, bzw. gestoppt werden. Ich benötige
jetzt eine Funktion, oder ne Idee, wie ich, bei der Abarbeitung dieser
Funktion, die die Verbindung zum Kleinrechner trennt, kurz wartet, bevor
sie die noch die anstehenden Funktionen abarbeitet. Dieses "warten" muss
so gestrickt sein, dass die anderen Objekte nicht mit "warten" müssen,
denn Sie werden zu einer anderen Zeit gestoppt oder gelöscht.

select() koennte eine moegliche (und noch dazu portable) Loesung
sein. Der select() Funktion uebergibst Du ein Array von file
descriptoren und eine maximale Wartezeit. Der Call kommt zurueck, wenn
einer des file descriptoren Daten liefern (oder annehmen) kann, oder
wenn die Wartezeit abgelaufen ist.

Tschau
Andreas
--
Andreas Hünnebeck | email: [email]ah (AT) despammed (DOT) com[/email]
----- privat ---- | www : http://www.huennebeck-online.de
Fax/Anrufbeantworter: 0721/151-284301
GPG-Key: http://www.huennebeck-online.de/public_keys/andreas.asc

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (German) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.