我有兩個獨立的任務和兩個獨立的操作。我認爲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