【发布时间】:2014-02-05 17:24:05
【问题描述】:
我有一个执行某些工作的方法。我在该方法中使用 System.Diagnostics.Stopwatch 来测量执行该方法执行的任务所花费的时间。该方法被多个线程多次调用如下:
ArrayList workerThreads = new ArrayList();
for (int i = 0; i < numThread; i++)
{
Thread workerThread = new Thread(DoWork);
workerThread.IsBackground = true;
workerThreads.Add(workerThread);
}
for (int i = 0; i < numThread; i++)
{
((Thread)workerThreads[i]).Start();
}
public void DoWork()
{
Stopwatch sw = Stopwatch.StartNew();
// Do something
sw.Stop();
Log.Info(sw.ElapsedMilliseconds);
}
像我这样使用 Stopwatch 是否线程安全?结果是准确的还是我需要显式锁定它以便线程不会跨过彼此的 Elapsed time 值?
【问题讨论】:
-
这能回答你的问题吗? Is Stopwatch.ElapsedTicks threadsafe?
标签: multithreading thread-safety stopwatch