Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (GNU/Linux, *NIX, *BSD und Co) » Sleep in einer While Schleife ??

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
15.09.2007, 14:58 Uhr
~Kooshy
Gast


Hallo,

ich hab probiert einen Timer oder Ticker zu Coden , aber wenn ich im while loop ein sleep einbaue , wacht der ganze prozess nicht mehr auf.

Wie kannmman sowas dernn umsetzen?


Bin auch für Anregung sehr Dankbar und würde ggf. auch , HTML , für etwas zum Essen schreiben!

Vielen Herzlichen Dank !
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
15.09.2007, 15:40 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Hi,
benutz pthreads für einen weiteren thread, der die warterei übernimmt, so bleibt der "vordergrund" aktiv ohne das alles blockiert.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
15.09.2007, 15:59 Uhr
~Kooshy
Gast


Hallo FloSoft , hab schonmal was von dir gehört ... irgendwo...


aber genau das soll ja passieren.

Also wenn ich jetzt sagen wir mal möchte das eine routine {x}... ausgeführt , und nach 2 sekunden wieder von vorne beginnt?




Code:

while(1){
do_my_thing();
sleep(2);

printf("Routine läuft...");
}





Bleibt die schleife stehen.


Der ganze Prozess müsste aber im Sekundentakt weiterarbeiten.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
15.09.2007, 18:03 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


naja was genau willst du denn machen - sleep legt den prozess für mind. der angegebenen zeit schlafen, d.h wenn dein "do_my_thing" 500ms braucht, dann braucht ein Schleifendurchlauf mind 2,5sekunden.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
15.09.2007, 18:28 Uhr
0xdeadbeef
Gott
(Operator)


Etwas in der Art?

C++:
#include <boost/thread.hpp>

#include <unistd.h>

#include <iostream>

class tick_thread {
public:
  tick_thread(bool &interrupted) : interrupted_(interrupted) { }

  void operator()() const throw() {
    while(!interrupted_) {
      boost::xtime xt;
      boost:xtime_get(&xt, boost::TIME_UTC);

      xt.sec += 2;

      std::cout << "tick" << std::endl;

      boost::thread::sleep(xt);
    }
  }

private:
  bool &interrupted_;
};

int main() {
  bool interrupt = false;

  tick_thread tt(interrupt);

  std::cout << "Press return to abort." << std::endl;

  boost::thread thrd(tt);

  std::cin.get();

  interrupt = true;
  thrd.join();
}


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
15.09.2007, 18:55 Uhr
~Kooshy
Gast


Vielen Vielen Dank ,



nein um Gotteswillen nicht so kompliziert.

Es geht nur darum , warum die Schleife nicht weiterläuft ?

Wenn ich Sie aufrufe bleibt es ohne alles stehen .

Ich habs in GNU C , probiert und da gibts standard mässig keine pthreads.

Zumindest auf dem Entwicklungsystem .

Aber es würde wirklich genügen wenn das ganze Grundsätzlich Technisch mit einer while sleep lösung gemacht wird.

ein ganz einfach Count System im Sekunden takt.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (GNU/Linux, *NIX, *BSD und Co) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: