sustituto de funcion sleep de window.h c++?

Iniciado por minari02, 30 Diciembre 2013, 20:55 PM

0 Miembros y 1 Visitante están viendo este tema.

minari02

Hola!!  ;D

Estoy aprendiendo C++ y estuve viendo ejemplos de como usar el do-while y pues me he encontrado con este ejemplo:

Código (cpp) [Seleccionar]
#include <iostream>
#include <windows.h>
using namespace std;
int main()

{
bool salida = false;
int num;
int sec=2000;
do{
 cout<<"\n ingrese un numero ";
  cin>>num;
     cout<<"Validando .";
for(int i = 0; i < 9; i++){
        cout<<".";
          Sleep(200);
      }
if(num == 10) salida = true;
   }
while(!salida);
return 0;

}


el programa lo que hace es verificar si el numero ingresado es 10 o no y al momento de imprimir "Validando" que valla saliendo un punto tras otro despacio, como si estuviera cargando...

se que es algo tonto, pero me gustaría saber una forma de que funcione asi en linux, alguna funcion que sustituya el Sleep(); o algo asi.

Aprovechando quiero preguntarles, hay alguna función importante en la librería windows.h? o solo sirven de adorno sus funciones?

Gracias.  :D

Shell Root

Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

ivancea96

Podrías hacerlo con la biblioteca Time. Un poco bestia, pero podría ir bien:

Código (cpp) [Seleccionar]

//
#include <Time.h>
//
void time(int milisecs){
    Time A = time();
    while(time()<A+milisecs);
}


Cabe decir, que no creo que ese código funcione. Y esque nunca usé las variables de Time.h, así que no se bien la sintaxis, ni los retornos de sus funciones. Pero es la idea :D

amchacon

En linux es con minúscula:
sleep(10);

Tienes que incluir la librería pthread.h y linkar con pthread

Cita de: minari02 en 30 Diciembre 2013, 20:55 PMAprovechando quiero preguntarles, hay alguna función importante en la librería windows.h? o solo sirven de adorno sus funciones?
Eso es la windows API. Te permite hacer tropecientas cosas:
http://msdn.microsoft.com/en-us/library/hh920509%28v=vs.85%29.aspx

Cita de: ivancea96 en 30 Diciembre 2013, 21:53 PM
Podrías hacerlo con la biblioteca Time. Un poco bestia, pero podría ir bien:

Código (cpp) [Seleccionar]

//
#include <Time.h>
//
void time(int milisecs){
   Time A = time();
   while(time()<A+milisecs); del reloj
}


Cabe decir, que no creo que ese código funcione. Y esque nunca usé las variables de Time.h, así que no se bien la sintaxis, ni los retornos de sus funciones. Pero es la idea :D
Eso no es la función sleep, eso es un asesinato de rendimiento.

Estás haciendo iteraciones en cada ciclo. Ahora mismo estás chupando un hilo de ejecución entero.

De hecho, hay un sencillo progama para saturar la CPU que consiste en crear un bucle:
Código (cpp) [Seleccionar]
while(1);

Y tantos hilos de ejecución como núcleos tenga un procesador.
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

minari02

Cita de: amchacon en 31 Diciembre 2013, 09:37 AM
En linux es con minúscula:
sleep(10);
Tienes que incluir la librería pthread.h y linkar con pthread
Eso es la windows API. Te permite hacer tropecientas cosas:
Código (cpp) [Seleccionar]
while(1);

como es eso de linkiar? me podrias poner como quedaria el codigo final profavor?

Gracias!  :)

amchacon

#include <pthread.h>

int main()
{
    sleep(3); //dormir 3 segundos
    return 0;
}


Lo de linkar no tiene nada que ver con el código, sino con la configuración del compilador. Si usas algún IDE, busca alguna opción para "linker settings".
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar