c# - EF 6 并行处理查询结果(100 万条记录)
问题描述
我正在使用 EF 6 来查询我存储的数据库表animals
。
var results = _ctx.Animals.ToList();
然后我有几个方法需要处理某些类型的动物。
public void ProcessDogs(List<Animal> data)
{
var dogs = data.Where(t=> t.Category == "dog").ToList();
// do some other work on the dogs
}
public void ProcessCats(List<Animal> data)
{
var cats = data.Where(t=> t.Category == "cat").ToList();
// do some other work on the cats
}
public void ProcessCamels(List<Animal> data)
{
var camels = data.Where(t=> t.Category == "camel").ToList();
// do some other work on the camels
}
如何以最佳方式并行处理从我的表返回的所有记录?我不能用async-await
!
解决方案
简单的。一个线程读取项目,然后将它们排入队列进行处理,多个线程将它们取出并处理它们。一个线程足以处理数据读取,根据网络的性质,数据读取很可能是通过一根以太网电缆传输的。
推荐阅读
- javascript - 获取溢出的元素
- c# - 将 XML/XSLT 转换为 HTML
- android - 在推送通知服务中加载图像时出现问题:无法解析主机:没有与主机名关联的地址
- php - 如何在 fopen() 文件中显示 php 变量而不是 php 变量值
- android - 如何实现支持Navigation的离线Android Mapbox地图?
- regex - RegEx 懒惰量词在开始
- python - Celery - 在所有节点上执行任务
- javascript - 如何将成员从您连接的语音移动到另一个语音频道
- bash - 'grep' 无法通过 ssh 识别
- javascript - 需要帮助优化我的 Javascript 以进行画布渲染