我有一个长期运行的任务,可以从多线程中受益。
每个线程都会随着时间的推移添加一个L2S实体,每个线程都需要访问该实体中的属性。
由于实体的单个实例的这种要求,每个线程很难使用多个datacontexts。 是否有一种推荐的方式来实现这种情况?
在使用Linq to SQL之前,我在经过一定数量的并行迭代后序列化为XML。这工作正常,但数据变得更加复杂,需要SQL中的关系/查询;
一些其他信息: 任务是分析视频帧以找到相似帧的序列。 Media,Frame和Shot有表格。 具有多个帧和镜头的媒体 具有多个帧的镜头; 帧提取和比较是处理器密集型操作,并受益于多线程。
问题是,对于每个提取的帧。它需要将它自身与之前和之后的帧进行比较。前/后帧可能来自单独的线程。 因此,将帧和镜头插回到正在处理的单个Media对象中意味着将来自多个数据上下文的实体组合为1。
答案 0 :(得分:0)
我没有解决并行的Linq问题,而是更改了流程。
而不是尝试从多个线程同时访问相同的项目列表。我已经拆分了项目列表并为每个部分分配了一个帖子。
这样,每个线程都可以在自己的列表中执行操作,而不会相互碰撞。 然后我写了一个整理方法来整理列表之间的连接。