List线程安全问题

ruilab 2012-02-13 07:19:11
List<T>是线程安全的(在非枚举等极端情况下)。
那是否意味着多线程,读,写,删,操作同时进行的时候,List不用加锁??

...全文
211 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ruilab 2012-02-14
  • 打赏
  • 举报
回复
恩恩,不是线程安全的。
charles_y 2012-02-14
  • 打赏
  • 举报
回复
不知道这句话是什么意思,如果不修改只是同时读,那几乎所有的类型都可以成为线程安全的。

后面的解释已经明确说明了这个不是线程安全的。
ruilab 2012-02-13
  • 打赏
  • 举报
回复
MSDN
此类型的公共静态(在 Visual Basic 中为 Shared)成员是线程安全的。 但不能保证任何实例成员是线程安全的。

只要不修改该集合,List<T> 就可以同时支持多个阅读器。 从头到尾对一个集合进行枚举在本质上不是一个线程安全的过程。 在枚举与一个或多个写访问竞争的罕见情况下,确保线程安全的唯一方法是在整个枚举期间锁定集合。 若要允许多个线程访问集合以进行读写操作,则必须实现自己的同步。

事理 2012-02-13
  • 打赏
  • 举报
回复
不好意思,可能我说错了。
事理 2012-02-13
  • 打赏
  • 举报
回复
要使用锁,对于应用类型多线程操作都要加锁,像值类型就可以不用加锁,如
volatile int itemIndex = 0;
volatile bool logining = false;
charles_y 2012-02-13
  • 打赏
  • 举报
回复
谁说是线程安全的?

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧