提升List带锁紧,使其耐压
本文关键字:List 提升 | 更新日期: 2023-09-27 17:50:52
我有一个像这样的字符串列表
private object = new object();
public List<string> list {
get{
lock(object){
return _list;
}
}
}
List<string> _list = new List<string>();
//some event which trigger's 1000 in a second
public void event(object sender, string e){
list.add(e);
}
public void processList(){
//process the list items one by one and remove it.
}
public void writeOnDisk(){
//write list on Disk
}
现在我的问题是列表处理速度比填充慢。我想把列表备份到磁盘上,以防应用程序崩溃或系统故障,但担心如果写列表磁盘会减慢速度表演我不想丢失数据,即使是一个项目。在这方面你能给我建议最好的方法吗?
在。net 4.0或更高版本中使用线程安全集合。对于您的情况,可以考虑使用ConcurrentQueue<T>
.NET中的线程安全集合
瓶颈之一应该是写文件的I/O,您可以考虑批处理而不是逐行写