我正在做一个必须让线程进行沟通的项目。
例如
我有两个线程数组,c[100]
和e[10]
。 (客户和员工)
一旦客户说c[3]
获取信号量,让其与其中一名员工说员工e[5]
,我该如何关联线程所代表的Customer
对象{{1} } c[3]
对象Employee
,让他们来回传递信息?
答案 0 :(得分:1)
允许线程传递信息有多种技术。最简单的方法是共享状态的互斥锁。最经典的可扩展方式之一是消息队列。您需要使用的方式取决于您的家庭作业的陈述。
通常,使用同步原语(无论是互斥体还是信号量等)保护共享状态,并让非共享状态正常运行。如果您有员工和客户,也许他们通过他们共享的“邮件槽”进行通信。使用您的信号量保护该邮件插槽,以防止在另一个写入时尝试阅读(反之亦然),并且您将拥有所需的主要策略。
答案 1 :(得分:0)
另一种方式是通过消息传递。例如,您可以为一个对象订阅事件的侦听器。当另一个线程导致更改时,它会让所有侦听器知道该事件,并且所有侦听器都会收到有关更改的通知。
另一种可能的解决方案是使用管道流或管道重组(即PidedInputStrean,PipedOutputStream,PipedReader,PipedWriter)。在这个方案中,一个线程在管道的一侧写入,另一个线程在另一侧写入。
而且我很确定还有其他几种方法可以做到。