C/Visual C - Funciones Síncronas y Asíncronas

 
Vista:

Funciones Síncronas y Asíncronas

Publicado por Lalo (6 intervenciones) el 07/05/2002 20:40:18
Hola,
necesito saber si hay alguna forma de decirle al compilador que deseamos que alguna instrucción se ejecute de forma síncrona, para que no pase a la siguiente instrucción sino hasta haber completado la actual. Es posible eso?,

si alguien sabe la respuesta y me la puede decir, mil gracias de antemano!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Funciones Síncronas y Asíncronas

Publicado por chuidiang (677 intervenciones) el 08/05/2002 06:16:54
Que yo sepa, salvo que te hayas metido con threads, ninguna función en C/C++ pasa a la siguiente hasta haber completado la anterior.
Concreta un poco más.

Se bueno.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Funciones Síncronas y Asíncronas

Publicado por LALO (6 intervenciones) el 09/05/2002 01:26:19
ahhhh, ok, lo que pasa es que programé un Dll que inicia un Job de impresión a la cola de windows sólo para poder checar el estado de la impresora (la comunicación bidireccional con ella, si tiene o no papel, si está en línea o no, etc...) conectada a el LPT1, checando el estatus del Job recién lanzado. Al depurar el código observé que aunque pasaba por la instrucción StartDoc y EndDoc, que envían el Job de impresión, no aparecía en la cola de windows sino hasta como dos segundos después. Por lo que al ejecutar el código, y si por ejemplo la impresora no tenía papel, al lanzar el Job y después intentar checar su estatus, simplemente, como todo era tan rápido, aún mi código no podía ver el Job en la cola de windows y mucho menos preguntar por su estatus, entonces tuve la idea de que podrían estarse ejecutando asíncronamente las instrucciones StartDoc y EndDoc y por eso seguía ejecutandose el resto de mi código a pesar de que aún no había sido efectivamente puesto el Job en la cola de impresión. Lo estoy soluciónando por el momento usando un sleep(), que le dé tiempo al Job de ponerse en la cola de espera para poder después preguntar por él.

Muchas gracias por tus respuestas chuidiang, y bueno si tienes más comentarios al respecto, una vez más te lo agradezco de antemano.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Funciones Síncronas y Asíncronas

Publicado por rsrobin (31 intervenciones) el 10/05/2002 20:36:51
Bien, segun entiendo el problema esta que tu funcion lanza un proceso hacia la impresora, pero luego este proceso es manejado por el sistema y no por tu funcion.

Bueno lo que debes hacer es crear un proceso desde tu funcion, para esto desde C lo puedes hacer con la funcion fork y luego utilizas la funcion waitpid y sus derivadas para esperar hasta que el proceso lanzado tenga exito u ocurra un error.

Esto lo que hace es esperar hasta que obtengas una respuesta de la impresora...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Funciones Síncronas y Asíncronas

Publicado por rsrobin (31 intervenciones) el 10/05/2002 20:39:46
Aclaro esto es desde C y linux.

En windows tendrias que buscar las funciones que hacen esto, nose si son las mismas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Funciones Síncronas y Asíncronas

Publicado por LALO (6 intervenciones) el 10/05/2002 22:41:21
Muchas gracias por el tip robin, voy a buscar documentación al respecto para ver que equivalentes hay para windows, y poder probar esta opción.

Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar