Producer-Consumer:缓冲区,用于从同一生产者接收n个连续消息

因此,我的生产者将n个连续的消息发送到缓冲区,然后发送一条结束消息(请注意,我无法修改Producer.java,并且此代码部分未同步):

for(i=0;i<n;i++)
    buffer.send(message[i]);
buffer.send(endMessage);

消息不包含线程的ID或可能导致消息来自哪个线程的东西。

缓冲区需要连续接收这n条消息(+结束消息),我无法从它们之间的另一个线程收到消息。 很好的例子:

received Msg1 from Thread1
           received Msg2 from Thread1
           etc.
           received MsgN from Thread1
           received end  from Thread1

           received Msg1 from Thread2 
           received Msg2 from Thread2
           etc.
           received MsgN from Thread2
           received end  from Thread2

错误示例:

 received Msg1 from Thread1
               received Msg2 from Thread1
               etc. 
               received Msg6 from Thread1

               received Msg1 from Thread2
               received Msg2 from Thread2

               received Msg7 from Thread1
               etc.

如何同步Buffer.java中的代码以按顺序获取消息?显然,在线程发送完之后,我显然需要利用结束消息来允许其他线程,但是从这里开始,所有的问号都会出现。

yishuitian1 回答:Producer-Consumer:缓冲区,用于从同一生产者接收n个连续消息

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3124144.html

大家都在问