如何创建一个线程安全的对象池?

问题描述:

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

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

在此先感谢...

+3

不要试图避免显式锁定,除非您有证据表明锁定是不可接受的性能的头号原因。绝大多数时候锁的速度非常快,如果你的锁速度很慢,那么几率是很好的,你的应用程序中有很深的设计问题。请记住,在争用情况下,锁只是缓慢的*,如果您有很多争议,*您可能做错了事。* – 2009-11-18 15:14:32

+0

+1看起来有趣!让我看看... – Hemant 2009-11-18 13:46:19

我有好运气this one CodeProject上。我只需稍作调整以便如何存储WeakReference,但除此之外,它在生产中运行并没有任何问题。