RT经常听人说,什么什么是线程安全的,比如说HashTable,就是线程安全的,意思是不是,当多个线程读写HashTable的数据时,不需要对此加锁啊???问题可能有点弱智,见笑见笑。
解决方案 »
- c# oracle在服务器资源管理器中已连接,但拖动表到.dbm1时出现以下错误:所选对象使用不支持的数据提供程序
- 一个纠结的递归问题。。
- C# winform 设置TextBox的字体样式
- 物理上有N台客户端电脑, 物理上有一台服务器,如WEB的IIS所在的电脑, 物理上有一台服务器,只装数据库, 大家能简要说明一下,用Remoting如果部署这
- .net多语言开发(C#,XML)
- 求c#与数据库的高手!
- datarow怎么删除不了?
- 如何在winform窗体中显示分割线
- 高分求调用vc的dll参数的方法,包括byte*和double*以及int*,分不够还可以加!
- 关于Table.Rows
- 网站源码截取问题
- 同一个解决方案里、C++怎么向C#通信?
另外一个加锁也是为了防止这种现象,比如同时操作一个变量
问这个问题不算是菜鸟哦,楼主谦虚啦
线程安全
--------------------------------------------------------------------------------Hashtable 是线程安全的,可由多个读取器线程和一个写入线程使用。 多线程使用时,如果只有一个线程执行写入(更新)操作,则它是线程安全的,从而允许进行无锁定的读取(若编写器序列化为 Hashtable)。 若要支持多个编写器,如果没有任何线程在读取 Hashtable 对象,则对 Hashtable 的所有操作都必须通过 Synchronized 方法返回的包装完成。 从头到尾对一个集合进行枚举本质上并不是一个线程安全的过程。 即使一个集合已进行同步,其他线程仍可以修改该集合,这将导致枚举数引发异常。 若要在枚举过程中保证线程安全,可以在整个枚举过程中锁定集合,或者捕捉由于其他线程进行的更改而引发的异常。