来自MSDN文档:
“如果没有线程正在读取Hashtable,则同步支持多个写入线程。 在存在一个或多个读取器和一个或多个写入器的情况下,同步包装器不提供线程安全访问。”
Source: http://msdn.microsoft.com/en-us/library/system.collections.hashtable.synchronized.aspx
听起来我仍然需要使用锁,那么我的问题是为什么我们还要使用Hashtable.Synchronized呢?
来自MSDN文档:
“如果没有线程正在读取Hashtable,则同步支持多个写入线程。 在存在一个或多个读取器和一个或多个写入器的情况下,同步包装器不提供线程安全访问。”
Source: http://msdn.microsoft.com/en-us/library/system.collections.hashtable.synchronized.aspx
听起来我仍然需要使用锁,那么我的问题是为什么我们还要使用Hashtable.Synchronized呢?
对于这种情况,您可以保证在写入数据结构时没有读取器会访问它(或者当您不关心读取错误的数据时)。例如,当结构不断被修改而是一次性计算,您稍后将需要访问它,尽管足够大以保证许多线程写入它。
当你在一个线程上使用for-each循环遍历哈希表(读取)时,如果存在其他可能添加/删除项目的线程(写入),则需要它...