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
Ir a la versión completa