Programación General > C/C++

 Programación Asíncrona

(1/3) > >>

Leber:
Hola, que tal.

Desarrollando una aplicacion, estoy usando una API de sonido que permite crear un stream(llenar el buffer) de manera asincrona sin bloquear la apliación, y una vez ha terminado, llama a un callback para procesar el sonido. Mi duda viene de que no entiendo muy bien como lo hace internamente. Para ser sinceros comprendo lo que significa hacerlo asíncrono, pero no así la manera de llevarlo a cabo.

Lo que he pensado es que quizas lo que hace es que, si se le especifica que no sea bloqueante, crea un nuevo thread para procesar esa petición y cuando termina llama a la funcion callback, de mientras el mainthread sigue su curso.

Se que no es muy bien una duda específica de C, es solo que me gustaría entender la filosofia de las llamadas asíncronas y como son tratadas. Más que nada para saber un poquito más.

No se si podriais explicarme un poco como funcionan las llamadas asíncronas.

He leido un par de links sobre esto, pero no acaba de quedarme claro del todo.

Gracias de antemano

m0skit0:
Asíncrono significa que no sabes cuándo va a suceder. Esto normalmente se genera por interrupciones hardware. Es muy probable que esté implementado con hilos, aunque al no tener el código fuente pues tampoco lo sé, pero sería lo más lógico y sencillo.

Leber:
Si, como yo tampoco lo tengo estoy un poco jodido xD, pero bueno, era más que nada para saber. Había leido que una forma sencilla era implementarlo con hilos, pero no me imagino una manera de hacer algo asíncrono sin hilos, quiero decir, si una aplicacion es ejecutada secuencialmente, no lo veo muy viable.

Gracias  ^_^

rfog:
Puedes trabajar de forma asíncrona sin hilos cuando estás haciendo E/S a disco mediante las estructuras OVERLAPPED de CreateFile/ReadFile/WriteFile.

Básicamente tu suscribes un callback (un puntero a función) en esas estructuras cuando llames a la función, que hará su operación en background y cuando haya terminado de hacer lo que le has dicho, ejecutará ese callback, informándote de que ha terminado, tras lo cual ya puedes hacer lo que quieras con lo cargado.

Leber:
Hola rfog.

Si, entiendo como funciona una callback, lo que me mantiene un poco más en vilo es como la función logra desvincularse para hacer su tarea en segundo plano. Son un poco manias mias, ya seguiré investigando.

Gracias por la información =)

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa