使用具有多线程组件的非线程安全组件(设计)

wj.*_*wj. 3 multithreading design-patterns thread-safety

设计问题:

多线程组件中使用非线程安全组件(Collection,API,...)...

示例:

component1:一个多线程套接字服务器,它将消息...发送给消息处理程序

component2:从服务器处理消息的非线程安全消息处理程序

我的解决方案

添加线程安全部件(缓冲服务器和消息处理器之间),则缓冲器将接收的消息中的多线程从服务器方式,并在它们发送相同的顺序对消息处理程序在一个单独的线程方式.

我的问题 :

有更好的解决方案吗?适当的设计模式可能是代理还是管道

Ree*_*sey 5

一个非常好的选择是使用生产者/消费者模式.

在这种情况下,多线程套接字可以充当保护缓冲区中的多个生成器,并且非线程安全消息处理程序可以完全同步地在其自己的线程中使用消息.这提供了一种非常干净的方式来处理这种类型的场景.