Sleep Alternative



  • Hallo,
    gibt es eine Alternative zu Sleep() aus der Windows.h?
    Ich will nämlich ein Programm im Hintergrund laufen lassen,
    und initialisiere dazu Allegro, erstelle aber kein Fenster.
    Das Problem:
    windows.h und allegro kommen miteinander in Konflikt, weil beide ein Objekt mit dem Namen BITMAP deklarieren.



  • Gibt es nicht, aber wozu brauchst du Sleep() denn?



  • Du könntest die windows.h wegkapseln, so dass Du deren Definitionen nach außen hin nicht mehr siehst:

    //sleep.h
    #ifndef __SLEEP_H__INCLUDED
    #define __SLEEP_H__INCLUDED
    
    namespace xy
    {
    void sleep(unsigned milisec);
    }
    
    #endif
    
    //sleep.cpp
    #include "sleep.h"
    #include "widnows.h" //nur in sleep.cpp sichtbar
    
    void xy::sleep(unsigned milisec)
    {
        Sleep(milisec);
    }
    
    //Allegro_user.cpp
    #include "sleep.h"
    #include "allgro_zeugs.h"
    
    //...
    xy::sleep(1000);
    


  • @kooky451: Das Programm liest eine Datei ein, darin steht beispielsweise echo HI. Das Programm führt dann den Befehl mit system() aus, wartet kurz und liest wieder die Datei ein und...
    Das Warten ist eben ganz wichtig



  • Tachyon schrieb:

    Du könntest die windows.h wegkapseln, so dass Du deren Definitionen nach außen hin nicht mehr siehst:

    //sleep.h
    #ifndef __SLEEP_H__INCLUDED
    #define __SLEEP_H__INCLUDED
    
    namespace xy
    {
    void sleep(unsigned milisec);
    }
    
    #endif
    
    //sleep.cpp
    #include "sleep.h"
    #include "widnows.h" //nur in sleep.cpp sichtbar
    
    void xy::sleep(unsigned milisec)
    {
        Sleep(milisec);
    }
    
    //Allegro_user.cpp
    #include "sleep.h"
    #include "allgro_zeugs.h"
    
    //...
    xy::sleep(1000);
    

    Das ist gut, danke 😃



  • #JP schrieb:

    Das Warten ist eben ganz wichtig

    Bestimmt 😉



  • #JP schrieb:

    windows.h und allegro kommen miteinander in Konflikt, weil beide ein Objekt mit dem Namen BITMAP deklarieren.

    Tja, das Problem hättest du mit C++-Bibliotheken und namespace nicht :p



  • schon mal was von

    #include <winalleg.h>
    

    gehört?

    Alles wie in windows.h, nur so das es eben auch mit allegro funkt.
    Tja.Fürs Warten wird viel getan, es ist nun mal

    verdammt

    wichtig.



  • Ich hab einfach selber eine SleepFunktion gebaut:

    #include <time.h>
    void Wait ( short Seconds )
    {
      clock_t WaitTime = clock( ) + Seconds * CLOCKS_PER_SEC;
      while( clock( ) < WaitTime ) 
      {
    
      }
    }
    


  • _3 schrieb:

    Ich hab einfach selber eine SleepFunktion gebaut:

    Das ist kein Sleep, da der Thread nicht schläft 😉
    (Soll heißen 100% CPU Last auf einem Kern.)


Anmelden zum Antworten