[C con Clase] Consulta, función que se ejecuta cada cierto tiempo

Diego diegogeid en gmail.com
Vie Jun 14 19:12:20 CEST 2013


Hola, Gracias Jose Luis por tu respuesta.

Desconocía de esa instrucción.

Sleep es un retardo en segundos, pero libc incluye la función nanosleep que
seguramente hará un sleep como se debe, es decir, mediante interrupciones y
hardware temporizador, y le indico los nanosegundos qeu deseo dormir la
tarea.

http://www.gnu.org/software/libc/manual/html_node/Sleeping.html

A probar...

Gracias!

Saludos.
Diego


El 14 de junio de 2013 12:00, José Luis Torre <
joseluistorrehernandez en gmail.com> escribió:

> Tienes que poner un sleep, de este modo cae radicalmente el consumó de cpu
> El 14/06/2013 16:46, "Diego" <diegogeid en gmail.com> escribió:
>
> Hola. Gracias a todos por el tiempo.
>>
>> José Luis, gracias por tu respuesta, es verdad que no es en tiempo real
>> pero 10uS para un procesador y un kernel actual no son un problema
>> (mientras no haya tareas hambriendas con mayor prioridad o menor nice). Los
>> temporizadores existen y de muchísima presición y la resolución que brinda
>> un microprocesador de este tipo esta sobrada.
>>
>> Steven, gracias por tu respuesta, es verdad que GLUT no ofrece resolución
>> temporal y encima de ello los tiempos son muy grandes en comparación con el
>> que le pedimos (si quisiera lograrlo a 1mS no podría con GLUT, esto tiene
>> una explicación pero al caso dejó de ser importante). Probé mi rutina
>> mediante un bucle que corre en un nuevo thread y la función gettimeofday
>> contínuamente comparando si excedió el tiempo (solo para ver cuanto varía
>> según la capacidad de procesamiento) y si bien los tiempos son muy exactos
>> (probé con un mínimo de 10uS), la tarea queda hambrienta y utiliza el 100%
>> de un nucleo realizando verificaciones temporales como es lógico de
>> presuponer, el uso del CPU no es aceptable, no utilizo C++ sino C, donde no
>> existen tales bibliotecas.
>>
>> El problema se reduce a dejar la tarea en espera hasta que transcurra un
>> determinado período de tiempo sin dejar al CPU hambriento, alguien sabe
>> como se logra? Supongo que, o bien existen funciones de C con este fin, o
>> API's del sistema operativo que ayuden a poner la tarea de fondo por un
>> tiempo, o interrupciones (y también seguramente bibliotecas creadas para
>> ello)
>>
>> Saludos y gracias!
>> Diego
>>
>> El 13 de junio de 2013 19:14, Davidson, Steven <srd4121 en njit.edu>escribió:
>>
>>> Hola Diego,
>>>
>>> 2013/6/13 Diego <diegogeid en gmail.com>
>>>
>>>> Hola!
>>>>
>>>> Estoy haciendo algunas pruebas bajo Ubuntu y requiero que una función
>>>> bastante simple se ejecute con cierta periodicidad (por ejemplo, 10 uS si
>>>> se pudiera, sinó 100 uS o 1 mS) pero que sea preciso, es importante ya que
>>>> corresponde a simulación de parámetros físicos y la función debe correr en
>>>> tiempos discretos, marcados por un temporizador.
>>>>
>>>> Estoy usando glut y la función glutTimerFunc no tiene la resolución que
>>>> necesito ni se ejecuta con determinación (entiendo que no le da prioridad).
>>>>
>>>>
>>> GLUT no ofrece al resolución (precisión) temporal, ya que se basa en
>>> milisegundos. Te interesa usar funciones de mayor resolución. Posiblemente
>>> tengas que crear tu propio sistema de alarma o de cronometría. En Ubuntu,
>>> podrías intentar usar 'clock_gettime()' declarada en <time.h>. La otra
>>> opción es usar la biblioteca Boost, que es ahora estándar en C++; te
>>> interesa usar la clase 'time_duration', que puede guardar hasta la cantidad
>>> de nanosegundos.
>>>
>>>
>>> Espero que esto te ayude.
>>>
>>> Steven
>>>
>>>
>>> _______________________________________________
>>> Lista de correo Cconclase Cconclase en listas.conclase.net
>>> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
>>> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>>>
>>
>>
>> _______________________________________________
>> Lista de correo Cconclase Cconclase en listas.conclase.net
>> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
>> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>>
>
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20130614/3309b0ec/attachment.html>


Más información sobre la lista de distribución Cconclase