之前學習多線程的時候,始終不能明白lock到底有毛線用。直到最近做了一個項目,裡面有很多的線程,但是呢,這些線程都會用到同一個datatable,而且會改變這個table中的內容。當時我就想啊,這幾個線程都要改這張表。會不會遇到同時在改這個表裡面某一行的情況。後來我機智的給每個線程都復制一張table。心想,這下大家各自改各自的,就可以啦。但是呢,就會導致每個線程都要改同樣的數據啊,會非常浪費時間!直到此刻才明白,lock是多麼好的朋友,它可以在一個線程修改表的時候,其他線程都不能改這張表。很有用的樣子~
lock用法:
//定義共享資源
object
obj=
new
object
();
//線程函數
void
threadFun()
{
lock
(obj)
{
//安全的訪問資源
}
}