我有两个独立的任务和两个独立的操作。我认为t0是线程安全的,但我不确定t1。这是对的吗?并发字典的性能很糟糕,我需要向集合中插入大量数据。c中的并行任务和线程安全#
var t0 = new Task[2]
{
Task.Factory.StartNew(()=>
{
list1=new sortedlist<int,int>(sortedlist1)
}
}),
Task.Factory.StartNew(()=>
{
list2=new sortedlist<int,int>(sortedlist2)
})
};
Task.WaitAll(t0)
var t1 = new Task[2]
{
Task.Factory.StartNew(()=>
{
foreach (var item in sortedlist1)
{
list1.Add(item.Key, item.Value);
}
}),
Task.Factory.StartNew(()=>
{
foreach (var item in sortedlist2)
{
list2.Add(item.Key, item.Value);
}
})
};
Task.WaitAll(t1)
任务之间似乎没有什么共同之处。你为什么认为它不是线程安全的? –
准确地说,我很惊讶,因为在t0没有数据丢失,但在t1的一部分我的数据丢失 – mohammad
这是一个http://codereview.stackexchange.com类问题 – Alex