List<int> data=new List<int>();
foreach(int id in ids){
var myThread=new Thread(new ThreadStart(Work));
myThread.Start(id);
}
Work(){
}
Method Work对接收到的id做一些处理,然后将结果添加到数据列表中?如何从每个线程向集合添加数据?我的代码会是什么样子?谢谢
请您参考如下方法:
如果您使用的是 .NET 4,我强烈建议您改用并行扩展。例如:
var list = ids.AsParallel()
.Select(Work)
.ToList();
工作是:
public int Work(int id)
{
...
}
以便它可以适本地接收id。如果你不喜欢方法转换,你可以添加一个 lambda 表达式:
var list = ids.AsParallel()
.Select(id => Work(id))
.ToList();
无论哪种方式,这都将避免创建比实际需要更多的线程,并处理线程安全方面的事情,而无需您自己管理锁。
