C# 对象池与 Interlocked.Increment

标签 c# .net multithreading locking interlocked

我见过很多不错的对象池实现。例如:C# Object Pooling Pattern implementation .

但似乎线程安全的总是使用锁,从不尝试使用 Interlocked.* 操作。

编写一个不允许将对象返回到池中的程序似乎很容易(只是一个带有 Interlocked.Increments 指针的大数组)。但我想不出有什么方法可以编写让您返回对象的方法。有人做过吗?

最佳答案

仔细想想为什么你仍然需要对象池——这里没有讨论被池化的对象。对于大多数对象,使用托管堆将提供必要的功能,而无需在您自己的代码中使用新的池管理器。只有当您的对象封装了难以建立或难以释放的资源时,托管代码中的对象池才值得考虑。

如果您确实需要自己做,那么有一个轻量级的读/写锁可能有助于优化池访问。

http://theburningmonk.com/2010/02/threading-using-readerwriterlockslim/

关于C# 对象池与 Interlocked.Increment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3663050/

相关文章:

c# - 如何序列化具有接口(interface)作为属性的对象?

c# - 使用反射调用不带参数的公共(public)方法

c# - 单个视觉状态的多个 VisualState 触发器

Java:另一个多线程执行器中的单线程子执行器

c# - 在 C# 中等待 Parallel.Invoke() 结束

c# - 如何将一个字符串分成两个字符串

.net - 我在使用 dotnet 安装 nuget 包时遇到错误,在 c :\中找不到任何项目

时间:2019-05-17 标签:c#mysqlconnectionstring问题

c# - .NET 中带有 KMS 的 AWS S3 客户端加密在最后一部分传输时发出 ProtocolViolationException

java - 对多线程概念有点困惑