【问题标题】:Performance counters and threading性能计数器和线程
【发布时间】:2010-01-13 23:47:20
【问题描述】:

我正在创建一些自定义性能计数器。我将在线程池上创建任务,并在多个工作线程中递增/递减计数器。

我需要给每个线程一个新的计数器对象吗?跨线程共享性能计数器对象是否安全(用于递增/递减)

【问题讨论】:

    标签: c#


    【解决方案1】:

    PerformanceCounter 类已经使用了一个线程安全的包装器,一个名为 SharedPerformanceCounter 的内部类。例如,它使用 Interlocked.Increment() 来增加计数器值。

    没有必要把自己锁起来。

    【讨论】:

    • 是的,我最终在那里反射并看到了。然后我阅读了帮助,它显示只有静态方法是线程安全的。所以,我想我现在陷入了一个哲学困境:由于文档不能保证安全,我应该将当前的包装器视为实现细节,忽略它,并创建线程特定的实例,还是应该将其视为文档错误并继续使用共享计数器?鉴于我在代码中看到的内容,我认为我是安全的,但是 15 年的软件工程让我厌倦了,所以我可能会变得保守。
    • 如果您需要有保修​​的保证,您需要致电 Microsoft。
    • 是的,我知道,我没想到会在这里。只是说出我的想法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-16
    • 2021-08-03
    • 1970-01-01
    • 2018-08-16
    • 2011-10-07
    • 2011-04-01
    相关资源
    最近更新 更多