private static int [] aa = new int[1000];
[STAThread]
static void Main(string[] args)
{
Thread thread_fst,thread_snd,thread_thd,thread_four,thread_five ; //定义内部线程 thread_fst = new Thread(new ThreadStart(one));
thread_fst.Start(); thread_snd = new Thread(new ThreadStart(two));
thread_snd.Start(); thread_five = new Thread(new ThreadStart(five));
thread_five.Start(); Thread.Sleep(1000);
string sResult;
while(true)
{
Thread.Sleep(100);
}
}
static void one()
{
int val = 1;
int nCnt = 0;
while(true)
{
for (int i = 0; i < 100; i++)
{
aa[i] = val;
}
Thread.Sleep(10);
}
} static void two()
{
int val = 2;
int nCnt = 0;
while(true)
{
for (int i = 0; i < 100; i++)
{
aa[i] = val;
}
Thread.Sleep(10);
} }
static void five()
{
while (true)
{
string sResult = "";
for (int i = 0; i < 100; i++)
{
sResult += aa[i].ToString();
}
Console.WriteLine(sResult);
Thread.Sleep(100);
}
}
变量aa为啥不需要锁起来
[STAThread]
static void Main(string[] args)
{
Thread thread_fst,thread_snd,thread_thd,thread_four,thread_five ; //定义内部线程 thread_fst = new Thread(new ThreadStart(one));
thread_fst.Start(); thread_snd = new Thread(new ThreadStart(two));
thread_snd.Start(); thread_five = new Thread(new ThreadStart(five));
thread_five.Start(); Thread.Sleep(1000);
string sResult;
while(true)
{
Thread.Sleep(100);
}
}
static void one()
{
int val = 1;
int nCnt = 0;
while(true)
{
for (int i = 0; i < 100; i++)
{
aa[i] = val;
}
Thread.Sleep(10);
}
} static void two()
{
int val = 2;
int nCnt = 0;
while(true)
{
for (int i = 0; i < 100; i++)
{
aa[i] = val;
}
Thread.Sleep(10);
} }
static void five()
{
while (true)
{
string sResult = "";
for (int i = 0; i < 100; i++)
{
sResult += aa[i].ToString();
}
Console.WriteLine(sResult);
Thread.Sleep(100);
}
}
变量aa为啥不需要锁起来
12222111122
11122211111
11222211111
11111122222
22222211111可是实际结果就象加锁访问对象一样
111111111111
222222222222
111111111111
111111111111
22222222222
{
int val = 1;
int nCnt = 0;
while(true)
{
for (int i = 0; i < 100; i++)
{
aa[i] = val;
Thread.Sleep(10); }
}
}
应该给jerryfos的
jerryfos要接分的话,来留个话。