2009-11-18 2 views
1

В моем приложении-сервере (написанном на C#) мне нужно создать пул того же типа объектов. Я извлекаю объект из пула, когда мне нужно, и он возвращается в пул, когда он больше не нужен. Механизм должен быть потокобезопасным, поскольку различные потоки будут запрашивать и отправлять эти объекты. Я понимаю, что часто блокирование чего-то, чтобы сделать потокобезопасное, отрицательно сказывается на производительности приложения. Можете ли вы предложить дизайн, в котором я могу даже избежать явных блокировок?Как создать потокобезопасный пул объектов?

Пожалуйста, можете ли вы предложить способ, которым я могу выполнить выше? Возможность изменять размер пула (создавать дополнительные, если работает без объектов) будет отличным дополнением.

Заранее спасибо ...

+3

НЕ пытайтесь избежать явных блокировок до тех пор, пока вы не получите ДОКАЗАТЕЛЬСТВО, что блокировки являются # 1 причиной UNACCEPTABLE производительности. Замки в подавляющем большинстве случаев невероятно быстрые, и если ваши блокировки медленные, то шансы хорошие, у вас есть глубокая проблема дизайна в вашем приложении. Помните, что блокировки только медленны * в условиях конкуренции *, и если у вас много споров, * вы, вероятно, делаете что-то неправильно. * –

ответ

1

Я имел счастье с this one на CodeProject. Я только должен был сделать небольшую настройку, как хранятся WeakReference, но кроме этого, он работает в производстве без каких-либо проблем.

Смежные вопросы