1
몇 가지 작업을 수행하는 방법이 있습니다. 해당 메서드에서 수행 한 작업을 실행하는 데 걸리는 시간을 측정하기 위해 해당 메서드에서 System.Diagnostics.Stopwatch를 사용합니다. 여러 스레드에서 호출하는 메서드에서 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);
}
그것이 내가 스톱워치 방법을 사용하는 것이 안전 스레드 다음과 같이이 방법은 여러 스레드에 의해 여러 번이라고? 결과가 정확합니까? 아니면 스레드가 서로의 경과 시간 값을 단계적으로 넘어 가지 않도록 명시 적으로 잠글 필요가 있습니까?
감사합니다. @Andrey. 나는 [이] 때문에 궁금했다 (http://stackoverflow.com/questions/21573756/stopwatch-misbehaving-because-of-multiple-threads) 시나리오 나는 직면하고있다 : – Cranialsurge