Является ли хорошей практикой иметь статическую переменную в качестве счетчика, которая может быть обновлена всеми потоками в программе 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
}
}
}
Помимо ответов уже сделано: Это может зависеть от того, что вы пытаетесь сделать, ИМХО. – Samuel
Нет никаких хороших методов для создания потокобезопасного «счетчика» - как и при любом асинхронном программировании, решения должны быть гораздо более информированными, исходя из проблемы, которую вы пытаетесь решить. Счетчик может быть безопасным или не может, в зависимости от вашей ситуации. –
@Samuel обновил мой вопрос – Seenu