您好我有一个应用程序,它保存笔划列表并指向页面。用户将不断更新到他们的设备。
List<data> li = null;
lock (locks) {
li = dataList.ToList();
}
var a = li.ToDataListStruct();
blah ....
这会比下面的效率更高:
lock (locks) {
var a = li.ToDataListStruct();
blah ....
}
ToDataListStruct将列表中的一个对象映射到一种对象并返回一个新的List。
这是服务器端。前一个:仅在调用ToList函数时被锁定,而使用新列表的其余代码将不被锁定。第二个:它锁定了整个代码。
第一个是否比最后一个有更好的表现
答案 0 :(得分:1)
阻止他人的锁定越少越好。
当然,C#标准库有并发集合。
查看System.Collections.Concurrent
名称空间。
ConcurrentQueue<data> queue = new ConcurrentQueue<data>();
foreach (data item in queue)
{
blah...
}
并发集合为您处理锁定和版本控制。