【问题标题】:How to create a thread-safe pool of objects?如何创建线程安全的对象池?
【发布时间】:2009-11-18 21:46:12
【问题描述】:

在我的服务器应用程序(用 C# 编写)中,我需要创建一个相同类型的对象池。当我需要时,我从池中拉出一个对象,当不再需要它时,它会返回到池中。机制需要是线程安全的,因为不同的线程会询问和提交这些对象。我知道经常锁定某些东西以使线程安全会对应用程序性能产生不利影响。你能推荐一个我什至可以避免显式锁定的设计吗?

请您建议我可以在上面完成的方式吗?调整池大小的能力(如果缺少对象,创建额外的)将是一个很好的附加组件。

提前谢谢...

【问题讨论】:

  • 在您有证据表明锁定是导致性能不可接受的第一大原因之前,请勿尝试避免显式锁定。在绝大多数情况下,锁的速度非常快,如果你的锁很慢,那么很有可能你的应用程序中存在深层设计问题。记住,锁只是在争用下很慢,如果你有很多争用,你可能做错了什么。

标签: c# .net .net-3.5 thread-safety


【解决方案1】:

【讨论】:

    【解决方案2】:

    我在 CodeProject 上遇到了 this one 的好运。我只需要对WeakReferences 的存储方式进行细微调整,但除此之外,它在生产环境中运行完全没有问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-08
      • 2020-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多