C#多线程安全
线程安全对象:
int、long、string、decimal
ConcurrentBag、ConcurrentDictionary、ConcurrentQueue、ConcurrentStack
线程不安全对象:
double、float、List
Datatable、StringBuilder、
Dictionary(仅读取安全)、
--------------------------------------------------------------------------------------------------------------------------------
StringBuilder为非线程安全对象,需要加锁,
Append、Clear、ToString三个操作都需要加锁
--------------------------------------------------------------------------------------------------------------------------------
出于性能的考虑Datatable操作并没有被设计成线程安全,需要使用lock,所做的操作包括:
1.在Datatable中增加,删除,修改行。
2.用Select方法在DataTable中选择行(这样可以通过创建一个新的索引来修改Datatable)。
3.在一个DataTable之上创建DataViews(跟第二条一样,这样也可以导致载DataTable中创建一个新的索引)。
4.修改排序属性