ADA - Notificaciones Asincronas

 
Vista:

Notificaciones Asincronas

Publicado por grillao333 (1 intervención) el 17/01/2004 16:42:33
Tengo un problema con la notificacion asincrona entre varios procesos.
Es el siguiente, cuando intento crear dos procesos de un tipo(A) y otro de otro tipo(B) solo consigo que se ejecute un proceso A y uno B, quedandose el otro proceso A esperando, mi codigo es mas o menos asi:

Task A
select
B1.Inicar;
then abort
-- Secuencias que se ejecutan en paralelo
end select
end A
A1:A;
A2:A;

Task B
accept Iniciar do
loop
-- Instrucciones
end loop
end Iniciar;

end B

B1: B;
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
Imágen de perfil de Alejandro

Problema con la notificación asíncrona entre varios procesos

Publicado por Alejandro (155 intervenciones) el 29/06/2023 23:03:12
La solución a tu problema podría ser utilizar el mecanismo de entrada/salida diferida en Ada para lograr una notificación asíncrona entre los procesos. Aquí tienes una posible solución utilizando entradas diferidas:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Task A is
    entry Start;
    -- Otras declaraciones y secuencias de código
end A;
 
Task B is
    entry Initiate;
    -- Otras declaraciones y secuencias de código
end B;
 
B1: B;
 
Task Body A is
begin
    loop
        select
            accept Start;
            -- Secuencias de código a ejecutar
        or
            B1.Initiate;
        end select;
    end loop;
end A;
 
Task Body B is
begin
    loop
        accept Initiate;
        -- Secuencias de código a ejecutar
    end loop;
end B;

En este ejemplo, hemos utilizado las entradas `Start` e `Initiate` en los Tasks A y B respectivamente. El Task A espera tanto la entrada `Start` como la invocación de `B1.Initiate` para ejecutar las secuencias de código correspondientes. De esta manera, ambos procesos pueden ejecutarse de forma asíncrona.

Recuerda que esta es solo una posible solución y que los detalles específicos pueden depender de la implementación y configuración de tu entorno de desarrollo. Asegúrate de adaptar el código a tus necesidades particulares.

¡Espero que esta solución te sea útil!
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