【发布时间】:2013-08-07 23:43:23
【问题描述】:
我正在为多个项目编写一个库。它包含包含和操作数据的类。所以我想我应该在执行这些类的方法时锁定这些数据。但我也想如果必须进行线程安全的数据操作,那么让更高的应用层处理锁定。 类库供以后实际应用程序使用的最佳做法是什么。
假设我有一门课SpecialList。我该怎么办:
- 调用方法时锁定数据
- 如果用户需要线程安全 + 忽略(索引)异常,则让用户锁定列表,以便用户必须捕获它们
?
如果我知道 .NET Framework 类 List 的处理方式,我也会这样做。
这些类没有明确针对单线程或多线程。他们只是在帮助各种用途的课程。
【问题讨论】:
-
除非您的列表具有专门针对多线程场景的功能,否则让所有用户为他们可能永远不需要的锁付费是没有任何意义的。
List<T>本身不是线程安全的(文档中有一个“线程安全”部分进行了解释)。 -
不存在不针对多线程的。这是否意味着我在低级别我应该避免锁定?
-
是的,您应该避免使用锁。相反,只需记录线程 un-safety.
标签: c# multithreading locking