Cita de: ivancea96 en 14 Julio 2015, 13:37 PM
En primer lugar, no puede devolver 4.9 porque no es coma flotante, y es en segundos.
He de decir, que ese supuesto "4.9", también se cumple en tu código. Puede faltarte unos milisegundos para acabar a tu thread, y el otro, volver a comenzar el bucle.
En cualquier caso, el tiempo máximo posible será de (5s + tiempo del código del bucle en el peor caso). Es algo inevitable, salvo que dentro del código del bucle se pongan comprobantes del tiempo.
Cuando mencione 4.9 me referia a calcular el valor desde los milisegundos.
El mayor problema que veo con ese enfoque es sobre tener el control del tiempo de ejecucion ya que si por algun motivo el codigo nunca alcanza la comprobacion en el while o tarda más del tiempo establecido ya que el mismo hilo estaria intentando controlar su propio tiempo de ejecucion. Diria que ese enfoque seria mas como ejecutar código por al menos un tiempo especifico.
El que yo sugiero seria crear el Worker thread y esperar por este a que ya sea pase el tiempo establecido o el hilo termine, claro que para determinar el tiempo del worker thread usaria las funciones de sincronizacion y no con funciones de tiempo.