Problema de múltiples agentes

digamos que tienes varios agentescada uno de ellos es su propio proceso) que pueden comunicarse entre sí (los agentes se comunican solo en parejas); ¿Cómo se asegura de que una vez que dos agentes comiencen a comunicarse, ningún otro agente pueda interrumpirlos?

Aquí está la parte importante del código:

class Agent {
    private void send(int to, byte[] message) {...};
    private void receive(int from, byte[] message) {...};
}

El método de envío envía el mensaje al agente especificado y el método de recepción procesa el mensaje recibido, que proviene de otros agentes. Entonces, digamos que los agentes con id = 1 e id = 2 intercambian algunos mensajes: ¿cómo me aseguro de que ninguno de los agentes procese (en su método de recepción) mensajes de ningún otro agente durante su intercambio? Intenté filtrar mensajes según la identificación del agente (almacenándolos en la variable int) pero parece que no funciona correctamente.

preguntado el 10 de mayo de 11 a las 12:05

¿Proceso propio o hilo propio? Leer este si no está seguro. -

@Ishtar: buen punto, asumí hilos en mi respuesta ... -

Entonces, @ark, ¿los procesos del agente son multiproceso o no? -

@Ishtar: son procesos, no hilos -

Creo que necesitamos saber más sobre la implementación de enviar () y recibir () para responder a esta pregunta. -

2 Respuestas

Con procesos y usando TCP para el IPC, en cualquier momento permita que cada agente tenga como máximo un socket abierto. Entonces, un segundo agente nunca podrá hablar con un agente que ya esté hablando.

contestado el 10 de mayo de 11 a las 17:05

Puede darles a los receptores una ficha. Cuando un agente desea enviar un mensaje a un receptor, primero debe obtener el token del receptor. Después de finalizar toda la comunicación, el remitente liberará el token y luego los demás podrán enviarlo al receptor.

contestado el 10 de mayo de 11 a las 17:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.