如何获取Channel中的元素数量<T>?

问题描述 投票:0回答:1

我正在规划一个订阅者和发布者系统,我计划在其中使用频道。我想记录我使用的每个通道中的元素数量,以便我可以根据系统中的瓶颈调整发布者/订阅者的数量。

我开始将

Channel
ChannelReader
ChannelWriter
包装到我自己的类中来计算写入和读取的数量,但这感觉就像一个黑客。有更好的办法吗?

c# .net-core channel
1个回答
3
投票

使用来源,卢克。消息来源告诉您,(a) 没有公共 API 可以做到这一点,(b) 您可以使用反射来获取有界和无界通道上私有属性

ItemsCountForDebugger
的值,(c) 尽管这是安全的吸气剂中没有锁定。当然,这是一个黑客行为。反射 hack 是否比包装类 hack 更好是一个品味问题。用于获取
Channel<T>
中元素的大致数量的公共 API 早在 2018 年就已被请求,并将在 .NET Core 5.0 中添加(预计于 11 月发布)。

© www.soinside.com 2019 - 2024. All rights reserved.