就线程安全而言,这是可以的,或者我需要使用不同的集合吗?
List<FileMemberEntity> fileInfo = getList();
Parallel.ForEach(fileInfo, fileMember =>
{
//Modify each fileMember
}
Run Code Online (Sandbox Code Playgroud) 我有以下内容:
foreach (var depthCard in depthCards)
{
var card = InternalGetCard(db, depthCard.CardId);
var set = InternalGetSet(db, (int)card.ParentSetId);
var depthArray = InternalGetDepthArrayForCard(db, set.SetId);
foreach (var cardToUpdate in set.Cards)
{
// do stuff
SaveChanges(db);
depthCards.Remove(depthCardToUpdate); // since I already took care of it here, remove from depthCards
}
}
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为我正在循环中修改集合.我的问题是......是否有某种类型的集合允许这种类型的访问?
我不想ToList()的depthCards,因为我已经有他们,我想修改该列表作为我迭代.可能吗?
我打算在多个线程之间共享一个List.该列表将在更改期间锁定,这种更改很少发生.如果同时通过列表从不同的线程进行多次迭代,是否存在线程安全问题?