2009-11-18 103 views
1

在我的服務器應用程序(用C#編寫)中,我需要創建一個具有相同類型對象的池。當我需要時,我從池中取出一個對象,當它不再需要時,它會回到池中。機制需要是線程安全的,因爲不同的線程會詢問和提交這些對象。我知道,經常鎖定某些東西以使線程安全對應用程序性能有不利影響。你能提出一個我甚至可以避免顯式鎖定的設計嗎?如何創建一個線程安全的對象池?

請你能建議我可以在上面完成的方式嗎?可以調整池的大小(如果缺少對象,則可以創建附加值)是一個很好的附加組件。

在此先感謝...

+3

不要試圖避免顯式鎖定,除非您有證據表明鎖定是不可接受的性能的頭號原因。絕大多數時候鎖的速度非常快,如果你的鎖速度很慢,那麼機率是很好的,你的應用程序中有很深的設計問題。請記住,在爭用情況下,鎖只是緩慢的*,如果您有很多爭議,*您可能做錯了事。* – 2009-11-18 15:14:32

回答

1

我有好運氣this one CodeProject上。我只需稍作調整以便如何存儲WeakReference,但除此之外,它在生產中運行並沒有任何問題。