Siempre noto que las personas tienen diferentes reacciones a las diferentes formas de crear un temporizador en UNIX.La mejor manera de hacer un temporizador en UNIX
sé algunas maneras diferentes que podía hacer un evento ejecute cada X segundos dentro de UNIX:
- se puede hacer un hilo de votación - pthread_t con duerme;
- puede hacer una selección() con un tiempo de espera;
- y supongo que puede usar el sistema operativo de algunas otras maneras.
¿Alguien puede proporcionar un código de muestra con la "mejor" o la forma más eficiente de hacer un temporizador y una descripción de por qué es el mejor? Me gustaría utilizar el mecanismo más eficiente para esto, pero no estoy seguro de cuál es.
Para nuestros propósitos, pretenda que está imprimiendo "¡Hola, mundo!" una vez cada 10 segundos
NOTA: No tengo TR1/Boost/etc. en este sistema, por lo tanto, guárdelo en llamadas directas al sistema C/C++ y UNIX. Perdón por no mencionar eso la primera vez :)
la programación de un solo subproceso es más fácil que un concurrente, por lo que si se puede garantizar que sus llamadas regulares no superen el intervalo, me gustaría ir con un simple tiempo de espera (como con 'select()'). Sin embargo, necesitarás multihilo, si las llamadas en sí tardan más y tu temporizador tiene que disparar nuevamente antes de que las llamadas regresen. –
El sistema ya usa mucho el multihilo para que no haya problema. Mezcle como una respuesta :) –
Hm, realmente no tengo nada que decir sobre la pregunta real. He usado boost.asio para mis necesidades de sincronización antes (con el bucle ioservice ejecutándose en un hilo separado), pero no puedo hablar de las ventajas comparativas de los diversos enfoques ... –