Programación General > ADA

 Lectores, Escritores, Productor Y Consumidor

(1/1)

Luckita:
Bueno, tengo dos problemas diferentes: No entiendo mucho de ADA, pero necesito tener esto terminado. Estoy tratando de simular el problema de los lectores y escritores, el típico de la concurrencia y la exclusión. Y el problema del productor/consumidor.
El de los lectores y escritores tengo el código, que ni siquiera compila. Y que adjunto a ver si alguien puede ayudarme.
En el caso del productor/consumidor, no tengo el código, tengo la implementación de un buffer circular y el código del productor/consumidor para cuando el buffer es de tamaño 1. Supongo que uniendo esas dos cosas voy a tener el caso del productor/consumidor para un buffer de tamaño, n, no sé, necesito orientación. Si quieren puedo subir los códigos del buffer circular y el del buffer de tamaño 1, no sé... :)

Espero que puedan ayudarme. Desde ya les estoy muy agradecida. :)



--- Código: Text --- --LECTORES Y ESCRITORES procedure Lectores_Y_Escritores is      procedure Lector(Valor_Leido:out Integer) is separate;   Escritor(Valor_Escrito:in Integer);   entry Comenzar_Lectura;   entry Lectura_Terminada; begin      null;end; procedure Lector(Valor_Leido:out Integer) isbegin   Comenzar_Lectura;   Valor_Leido := Var_Compartida;   Lectura_Terminada      end         task body Lectores_Y_Escritores is      Var_Compartida:Integer;      Lectores:Integer = 0;   begin      accept Escritor(Valor_Escrito:in Integer) do         Var_Compartida:=Valor_Escrito         end;               loop          select            when Escritor'Count=0 accept Comenzar_Lectura;            Lectores:=Lectores+1;            or accept Lectura_Terminada;            Lectores=Lectores-1;         or when Lectores=0;            accept Escritor(Valor_Escrito:in Integer) do               Var_Compartida:=Valor_Escrito;            end;            loop               select                  accept Comenzar_Lectura                     Lectores=Lectores+1                  else exit                  end select               end loop            end select         end loop      end Lectores_Y_Escritores  

Gneuromante:
Los entry no los puedes declarar dentro de un procedure tienen que estar declarados dentro de una task.

Una buena fuente de información:

http://es.wikibooks.org/wiki/Programaci%C3...en_Ada_/_Tareas

Luckita:
Gracias.
La verdad es que sé que el código está mal, obviamente...
Ahora me gustaría si alguien me pudiera decir cómo hacer el problema de Lectores y Escritores... Sé que tiene que haber un task Escritor, un task Lector, y otro task, que posiblemente sea el que controla cómo leen y escribe o algo así, no sé. Espero que alguien me pueda ayudar.  :(

Navegación

[0] Índice de Mensajes

Ir a la versión completa