C# .NET 프로그램의 모든 스레드에서 업데이트 할 수있는 정적 변수를 카운터로 사용하는 것이 좋습니다.
샘플 코드 :정적 변수 및 다중 스레딩
public class SomeTask
{
static int count = 0;
public void Process()
{
while(true)
{
//some repeated task
count++;
if(count>100000)
{
count=0;
break;
}
}
}
}
public class WorkerRole : RoleEntryPoint
{
public override void Run()
{
while(true)
{
for (int i = 0; i < maxTasks; i++)
{
this.Tasks[i] = Task.Factory.StartNew(() => (new SomeTask()).Process());
}
Task.WaitAll(this.Tasks);
//every 100000 in counter needs some updates at program level
}
}
}
: 이것은 당신이 뭘 하려는지에 달려 있습니다, IMHO. – Samuel
스레드 안전 "카운터"를 사용하는 것은 바람직하지 않습니다. 모든 비동기 프로그래밍에서와 마찬가지로 해결하려는 문제를 기반으로 의사 결정에 훨씬 많은 정보를 제공해야합니다. 카운터는 귀하의 상황에 따라 안전 할 수도 있고 그렇지 않을 수도 있습니다. –
@Samuel이 내 질문을 업데이트했습니다. – Seenu