谢谢两位,这么快!class Program { static volatile int n = 0; static void foo1() { for (int i = 0; i < 100000000; ++i) { n = n + 1; } Console.WriteLine("foo1 complete, n = {0}", n); } static void foo2() { for (int i = 0; i < 100000000; ++i) { n = n + 1; } Console.WriteLine("foo2 complete, n = {0}", n); } static void Main(string[] args) { new Thread(foo1).Start(); new Thread(foo2).Start(); } }就是说这段代码 如果在多cpu上 可能会有并发冲突? code来自: http://blog.csdn.net/huangjf_1983/archive/2008/10/12/3065146.aspx 网上的资料中几乎没有提到过这一点。
{
static volatile int n = 0; static void foo1()
{
for (int i = 0; i < 100000000; ++i)
{
n = n + 1;
}
Console.WriteLine("foo1 complete, n = {0}", n);
} static void foo2()
{
for (int i = 0; i < 100000000; ++i)
{
n = n + 1;
}
Console.WriteLine("foo2 complete, n = {0}", n);
} static void Main(string[] args)
{
new Thread(foo1).Start();
new Thread(foo2).Start();
}
}就是说这段代码 如果在多cpu上 可能会有并发冲突?
code来自: http://blog.csdn.net/huangjf_1983/archive/2008/10/12/3065146.aspx
网上的资料中几乎没有提到过这一点。
总是 10XXXXXXX.
说明加了volatile,也不是原子操作。如果用interlocked.XXX就没有问题了。所以volatile在多cpu的环境下面用处并不大,这样说对吗?