设计问题:
使用non-thread-safe组件(Collection,API,.)使用多线程组件.
例子:
component1:发送消息的多线程套接字服务器.到消息处理程序。
component2:一个处理消息的非线程安全消息处理程序.从服务器
我的解决方案:
在服务器和消息处理程序之间添加一个线程安全组件( buffer ),缓冲区将从服务器以多线程方式接收消息,并以同级的形式以单线程方式将它们发送到消息处理程序。
我的问题是:
有没有更好的解决办法?合适的设计模式可能是代理还是管线?
发布于 2009-12-23 16:49:43
其中一个非常好的选择是使用生产者/消费者模式。
在这种情况下,多线程套接字可以作为多个生产者进入一个受保护的缓冲区,而非线程安全消息处理程序可以完全同步地在自己的线程中使用消息。这为处理这类场景提供了一种非常干净的方法。
发布于 2009-12-23 16:39:44
我个人喜欢“消息队列”方法:工作可靠,具有良好的解耦合特性,并且易于实现。
发布于 2009-12-23 16:43:27
一种常见的方法是简单地使用粗粒度锁来保护非线程安全API,或者创建一个负责锁定的薄包装器。
https://stackoverflow.com/questions/1953869
复制相似问题