將靜態變量作爲計數器,可以通過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