나는 C# ASP.NET MVC
프로젝트를 가지고 있습니다.
저는 기본적으로 시뮬레이션 옵션을 취소하고 결과를 대조하고 있습니다.
multi-threading
을 사용하면 백만 번 이상의 시뮬레이션을 실행할 수 있습니다.
내 코드는 다음과 같다 :스레드 로컬 변수가있는 Parallel.For 루프
public class MyClass
{
private ConcurrentBag<StuffResult> StuffResults { get; set; }
private bool CancellationRequested { get; set; }
public void DoAlotOfStuff(int numberOfStuffToDo)
{
var cancellationTokenSource = new CancellationTokenSource();
var options = new ParallelOptions { CancellationToken = cancellationTokenSource.Token };
Task.Factory.StartNew(() =>
{
if (CancellationRequested) cancellationTokenSource.Cancel();
});
try
{
Parallel.For(0, numberOfStuffToDo, options, a =>
{
options.CancellationToken.ThrowIfCancellationRequested();
var class1 = new Class1();
var class2 = new Class2();
var class3 = new Class3();
var class4 = new Class4(class1, class2, class3);
var result = class4.DoStuff();
StuffResults.Add(result);
});
}
catch (OperationCanceledException e)
{
//handle exception
}
}
}
질문 : 각 반복에 대한 새로운 Class1
, Class2
, Class3
및 Class4
객체의 인스턴스를 피할 수 있습니까? 나는 this msdn 기사를 읽었지만 그것을 이해하지 못한다. 스레드 당 각 객체 당 1 개. 클래스가 그들과 관련된 상태의 일종이있는 경우를 인스턴스화 피할 수 있다면