elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  Limitar el tiempo de ejecucion de una funcion.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Limitar el tiempo de ejecucion de una funcion.  (Leído 627 veces)
yoelmend

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Limitar el tiempo de ejecucion de una funcion.
« en: 30 Julio 2017, 05:26 »

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://...........");
}



En línea

engel lex
CoAdmin
***
Desconectado Desconectado

Mensajes: 12.716



Ver Perfil
Re: Limitar el tiempo de ejecucion de una funcion.
« Respuesta #1 en: 30 Julio 2017, 05:28 »

puedes usar multihilo y matar el hilo cuando haya excedido el tiempo, o simplemente esperar asincronamente por la respuesta


En línea

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

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Re: Limitar el tiempo de ejecucion de una funcion.
« Respuesta #2 en: 30 Julio 2017, 05:31 »

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

engel lex
CoAdmin
***
Desconectado Desconectado

Mensajes: 12.716



Ver Perfil
Re: Limitar el tiempo de ejecucion de una funcion.
« Respuesta #3 en: 30 Julio 2017, 05:34 »

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
En línea

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

Desconectado Desconectado

Mensajes: 25



Ver Perfil
Re: Limitar el tiempo de ejecucion de una funcion.
« Respuesta #4 en: 4 Agosto 2017, 05:20 »

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
En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.263


ASMático


Ver Perfil WWW
Re: Limitar el tiempo de ejecucion de una funcion.
« Respuesta #5 en: 4 Agosto 2017, 13:26 »

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

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

engel lex
CoAdmin
***
Desconectado Desconectado

Mensajes: 12.716



Ver Perfil
Re: Limitar el tiempo de ejecucion de una funcion.
« Respuesta #6 en: 4 Agosto 2017, 14:16 »

¿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
En línea

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.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines