線程同步有很多種方式,如果只是共享整型數(shù)據(jù),可以使用Interlocked進(jìn)行同步。
下面給出一個例子,來說明如何利用Interlocked進(jìn)行同步。
1 int sum = 0;2 Parallel.For(1, 10001, i =>3 {4 sum += 1;5 });6 tbContent.Text = "結(jié)果:" + sum;
看上面這段代碼,經(jīng)過10000次并行循環(huán)后,預(yù)期sum變量最后的值為10000。然而,由于資源沖突的原因,sum最后的值并不確定,多數(shù)情況小于10000。
可以有很多種方式來進(jìn)行同步,比如專門用一個object對象同步。不過,這里我們使用Interlocked來進(jìn)行同步,代碼如下:
1 int sum = 0;2 Parallel.For(1, 10001, i =>3 {4 Interlocked.Increment(ref sum);5 });6 tbContent.Text = "結(jié)果:" + sum;
運(yùn)行一下,sum每次運(yùn)行的值都為10000。
新聞熱點(diǎn)
疑難解答