ADA - Orientacion para una practik

 
Vista:

Orientacion para una practik

Publicado por canma5 (1 intervención) el 17/04/2002 18:13:05
Orientacion para una practica

Hola, tengo q hacer una practik y no se como hacerla, si quieres echarme una mano te estare muy agradecido!

Aqui tienes el enunciado:

Simular mediante un programa concurrente escrito en ADA que utilice el
mecanismo de sincronización de SEMÁFOROS, el funcionamiento de un
productor y dos consumidores que actúan sobre un buffer de datos del que
insertan y consumen dichos datos.
Consideraremos que el buffer es una variable entera sobre la que se irá
incrementando o decrementando su valor mediante la tarea
correspondiente.
Para poder hacer uso de la librería que contiene las funciones de los
semáforos, será necesario especificar el siguiente código:
with Text_IO;
use Text_IO;
with Semaphore_Package;
use Semaphore_Package;
La declaración e inicialización de un semáforo se hace de la siguiente
forma:
S: Binary_Semaphore := Init(1);

Si estas interesado mandame un mail
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

Simulación concurrente de un productor y dos consumidores utilizando semáforos

Publicado por Alejandro (155 intervenciones) el 29/06/2023 22:19:52
Para abordar esta práctica, puedes seguir los siguientes pasos:

1. Importa las bibliotecas necesarias:
1
2
3
4
with Text_IO;
use Text_IO;
with Semaphore_Package;
use Semaphore_Package;

2. Declara e inicializa el semáforo:
1
S: Binary_Semaphore := Init(1);

3. Crea las tareas del productor y los dos consumidores:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
task type Productor;
task type Consumidor;
 
task body Productor is
begin
   loop
      -- Realiza la lógica del productor
      -- Inserta los datos en el buffer
      -- Puedes usar los procedimientos de la librería Semaphore_Package
   end loop;
end Productor;
 
task body Consumidor is
begin
   loop
      -- Realiza la lógica del consumidor
      -- Consume los datos del buffer
      -- Puedes usar los procedimientos de la librería Semaphore_Package
   end loop;
end Consumidor;

4. Implementa la lógica del productor y los consumidores dentro de los bucles `loop` en las tareas correspondientes. Asegúrate de usar los procedimientos adecuados de la librería Semaphore_Package para realizar la sincronización y el acceso al buffer compartido.

Recuerda que el uso de semáforos te permitirá controlar el acceso al buffer compartido y evitar condiciones de carrera.
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