Stopwatch.ElapsedTicks 线程安全吗?
如果我有一个共享的 System.Diagnostics.Stopwatch 实例,多个线程能否以安全的方式调用 shared.ElapsedTicks 并获得准确的结果?
以这种方式使用 Stopwatch 的共享实例与使用静态 GetTimeStamp()
方法之间在线程安全/准确性方面有什么区别吗?
我正在测量大约 180 毫秒的间隔,发现使用共享实例给我带来了更大范围的结果,其中包括大量比我预期短的结果。
该机器有多个 CPU(2 个 Intel X5550)
If I have a shared System.Diagnostics.Stopwatch
instance, can multiple threads call shared.ElapsedTicks
in a safe manner and get accurate results?
Is there any difference in terms of thread-safety/accuracy between using a shared instance of Stopwatch in this way, and using the static GetTimeStamp()
method?
I'm measuring intervals of around 180ms, and finding that using the shared instance is giving me a larger spread of results, including a significant number that are shorter than I would expect.
The machine has multiple CPUs (2 * Intel X5550 for what it's worth)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
来自 MSDN:
From MSDN:
查看源代码, 是线程安全的,但不能使用:
Stop()
、Reset()
和Restart()
。因此,如果您启动一个共享实例,不修改它并仅调用
ElapsedXXX
属性,那么应该没问题。Looking at the source code, it is thread-safe, but you must not use:
Stop()
,Reset()
andRestart()
.So, if you start a shared instance, does not modify it and call only
ElapsedXXX
properties, you should be fine.看源码,不是线程安全的。
Looking at the source code, it is not thread-safe.
您可以使用 https://msdn.microsoft。 com/en-us/library/dd642243(v=vs.110).aspx
像这样:
You can use https://msdn.microsoft.com/en-us/library/dd642243(v=vs.110).aspx
like this: