¿Cómo hacer un Sleep en lua?

60 views
Skip to first unread message

busc...@gmail.com

unread,
Nov 27, 2006, 3:28:34 PM11/27/06
to lua-es
¿Alguien sabe cómo se puede hacer un Sleep en lua?
Tengo un script que ejecuta código de c++, y en cierta llamada el
código de c++ abre un hilo, así que necesito que lua espere unos
segundos y a continuación le diga al hilo de c++ que debe terminar.
¿Ideas?

Jose L. Hidalgo

unread,
Nov 27, 2006, 4:09:36 PM11/27/06
to lua-es
Hola buscarini,
La verdad es que no está definido cómo se comporta lua con C++, debes
estar usando algo muy particular. Por lo general lua no tiene forma de
ejecutar un sleep, a no ser que registres una función que lo haga por
ti. Más aun, la máquina virtual de lua no está preparada para
multithreading "por defecto" así que debes estar mezclando dos cosas
muy malas C++ y threading con lua... cuidado!

Un saludo,
Jose L.

busc...@gmail.com

unread,
Nov 27, 2006, 5:14:00 PM11/27/06
to lua-es
Al final lo he resuelto de otra manera, pero me sigue interesando lo
del Sleep. ¿Seguro que no hay ninguna manera de esperarse un tiempo
entre la ejecución de dos líneas de un script?
He visto algo así como un OnTimer, pero no sé exactamente cómo
funciona.

On Nov 27, 10:09 pm, "Jose L. Hidalgo" <joseLuis.Hida...@gmail.com>
wrote:

Jose L. Hidalgo

unread,
Nov 28, 2006, 12:35:31 PM11/28/06
to lua-es
Yep,
Nada estándar que yo sepa, por lo menos en el manual de Lua no
aparece nada referente al tiempo, sleeps, timers, etc.. Es fácil
hacerte una función que llame a sleep/usleep/msleeep y registrarla.
¿Dónde has visto eso de OnTimer?

Jose L.

esbxp

unread,
Dec 20, 2006, 3:41:38 PM12/20/06
to lua-es
Hola: Soy esbxp, tambien busco informacion sobre lua:

Tengo una inquietud,, pero te voy a dar esta ide a 1ro:
mira este codigo:

bool _Npc2Anime::Pulso()
{
bool iResult = true;

if(iGoal > clock() ){
iResult = false;
} else {
iWait = fPulso_x_Seg * CLOCKS_PER_SEC;
iGoal = iWait + clock();
}
return(iResult);
}

void _Npc2Anime::Play(BITMAP *bmp)
{
if( !Pulso() ) { goto Sigue; }
.
.
.
Sigue:

}

La funcion Pulso(), forma parte de una structura, _Npc2Anime, que
contiene 3 variables declaradas así,, dentro de ella:

clock_t iWait;
clock_t iGoal;

float fPulso_x_Seg

el segundo Metodo llamado Play( ... ), llama esta funcion,, pero antes
puedes debes poner un valor de tiempo de espera,, en la Variable,
fPulso_x_Seg,, esto es un valor flotante que tomando los CLOCKS_PER_SEC
de la CPU, puede calcularte un retardo,, muy exacto,, por ejemplo: si
quieres que las instrucciones del metodo Play( ... ), entre la llamada
a la funcion, Pulso(),, se ejectute 4 veces por segundo,,, en
fPulso_x_Seg debes poner 0.0250, asi puedes ir incrementando el valor,,
en la 1ra pasada,, calculará iGoal,, es en este instante,, cuando
iGoal supera el reloj de la maquina,, i la funcion retornará false,,
por lo que las funciones antes de la etiqueta,, no se ejecutaran en ese
lapso,, hasta que el reloj del CPU,, alcance el tiempo estimativo....

bien espero te sirva,,,,,
Bye Bye!!!!

> > funciona.- Ocultar texto de la cita -- Mostrar texto de la cita -

Reply all
Reply to author
Forward
0 new messages