Limitar el tiempo de ejecucion de una funcion.

Iniciado por yoelmend, 30 Julio 2017, 05:26 AM

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

yoelmend

Hola a todos esta vez tengo la siguiente duda.
Como  limitar el tiempo de ejecucion de una funcion?
Me explico. Tengo una función que hace una llamada al systema (descarga un archivo por wget) sin embargo hasta que no descarga el archivo el programa no puede seguir caminando y esto me pone en una situacion algo complicada ya que la ejecucion y el tiempo de descarga dependera de la velocidad del internet, el servidor, la conexion etc. Como hacer para que pasado x cantidad de tiempo se deje de ejecutar ese hilo y siga el programa ?

void descargar(){
system("wget http://...........");
}


engel lex

puedes usar multihilo y matar el hilo cuando haya excedido el tiempo, o simplemente esperar asincronamente por la respuesta
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

yoelmend

Gracias por tu respuesta, lo que no tengo muy claro es como limitar el tiempo de ejecucion, saludos

engel lex

así mismo, creas un hilo para la descarga y la aplicación en espera, si el hilo responde rompe la espera, si la espera llega al final, detiene el hilo
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

aurquiel

Asi a lo rapido y facil te diria correr un segundo con un sleep de tiempo y cuando termine verifique si el hilo de descarga termino sino mata el hilo y despues el hilo de espera muere tambien.

Es lo mas facil que se me ocurre.

Otra forma mas elaborada seria obtener el tiempo del sistema y verficar cuando pase de cierto valor.

Igual en ambos casos necesitarias dos hilos uno que descargue y otro que chequee el tiempo como dijeron mas arriba de mi comentario

ivancea96

¿No tiene wget la opción de ponerle timeout?

Forzar un hilo a terminar debería ser la última opción.

engel lex

Cita de: ivancea96 en  4 Agosto 2017, 13:26 PM
¿No tiene wget la opción de ponerle timeout?

Forzar un hilo a terminar debería ser la última opción.

Creo que wget no tienen timeout de descarga, es decir, si algo falla si, pero si la descarga está en camino, no
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.