假设您有多个代理(每个代理都是它自己的进程),它们可以相互通信(代理只能成对通信);你如何确保一旦两个代理开始通信,没有其他代理可以打断它们?
以下是代码的重要部分:
class Agent {
private void send(int to, byte[] message) {...};
private void receive(int from, byte[] message) {...};
}
send方法将消息发送到指定的代理程序,接收方法处理来自其他代理程序的接收消息。因此,假设id = 1且id = 2的代理交换了一些消息:我如何确保在交换期间两个代理都没有处理来自任何其他代理的消息(在它的接收方法中)?我尝试根据代理的id过滤消息(通过将它们存储在int变量中),但它似乎不能正常工作?
答案 0 :(得分:1)
使用进程并使用TCP进行IPC,任何时候都允许每个代理最多打开一个套接字。然后第二个代理人将永远无法与已经在谈话的代理商交谈。
答案 1 :(得分:0)
您可以为接收者提供令牌。当代理想要发送给接收者时,它应该首先获得接收者的令牌。完成整个通信后,发送方将释放令牌,然后其他人可以发送给接收方。