Raj*_*eev 2 .net vb.net thread-safety c#-4.0
实际上我正在使用一个应用程序,它使用多个线程来处理任务数量,父应用程序接收任务的输出,稍后写入文件,目前我正在使用arraylist来附加输出,但恰好是从队列中删除项目时速度慢.我正在考虑将arraylist部分转换为链表以进行优化读取和清除,如果.Net的linkedList实现是线程安全的甚至使用arraylist是线程安全的话,任何人都可以确认我吗?
该参考文献指出:
此类型不是线程安全的.如果需要多个线程访问LinkedList(Of T),则需要实现自己的同步机制.
只要未修改集合,LinkedList(Of T)可以同时支持多个读取器.即便如此,通过集合枚举本质上不是一个线程安全的过程.在枚举与写访问争用的极少数情况下,必须在整个枚举期间锁定该集合.要允许多个线程访问集合以进行读写,您必须实现自己的同步.
编辑:
对于ArrayList,引用说明:
此类型的公共静态(在Visual Basic中为Shared)成员是线程安全的.任何实例成员都不保证是线程安全的.
只要不修改集合,ArrayList就可以同时支持多个读取器.为了保证ArrayList的线程安全,所有操作必须通过Synchronized方法返回的包装器完成.
枚举通过集合本质上不是线程安全的过程.即使集合是同步的,其他线程仍然可以修改集合,这会导致枚举器抛出异常.为了在枚举期间保证线程安全,您可以在整个枚举期间锁定集合,也可以捕获由其他线程所做的更改导致的异常.