首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用非线程安全组件和多线程组件(设计)

使用非线程安全组件和多线程组件(设计)
EN

Stack Overflow用户
提问于 2009-12-23 16:37:14
回答 4查看 223关注 0票数 3

设计问题:

使用non-thread-safe组件(Collection,API,.)使用多线程组件.

例子:

component1:发送消息的多线程套接字服务器.到消息处理程序。

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

我的解决方案:

在服务器和消息处理程序之间添加一个线程安全组件( buffer ),缓冲区将从服务器以多线程方式接收消息,并以同级的形式以单线程方式将它们发送到消息处理程序。

我的问题是:

有没有更好的解决办法?合适的设计模式可能是代理还是管线

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-12-23 16:49:43

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

在这种情况下,多线程套接字可以作为多个生产者进入一个受保护的缓冲区,而非线程安全消息处理程序可以完全同步地在自己的线程中使用消息。这为处理这类场景提供了一种非常干净的方法。

票数 5
EN

Stack Overflow用户

发布于 2009-12-23 16:39:44

我个人喜欢“消息队列”方法:工作可靠,具有良好的解耦合特性,并且易于实现。

票数 3
EN

Stack Overflow用户

发布于 2009-12-23 16:43:27

一种常见的方法是简单地使用粗粒度锁来保护非线程安全API,或者创建一个负责锁定的薄包装器。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1953869

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档