创建并行循环的正确方法

本文关键字:方法 并行 循环 创建 | 更新日期: 2023-09-27 17:50:39

我写了一段代码来处理Azure服务器上的一些数据。当我第一次编写代码时,它是线性的For Each循环,并且需要很长时间才能完成,我通过使用Parallel来改进代码,如下所示:

Parallel.ForEach(users, currentUser =>
  {
     int number = myrollup.CountFilmsForUsers(currentUser.UserId,distort,tend).Result;
     lock(myrollup)
      {
        var record = new UserAnalytics();
        { 
          UserId = currentUser.UserId,
          UserFName = currentUser.FirstName,
          UserLName = currentUser.LastName,
         };
        session.SaveOrUpdate(record);
       }
    });

这个并行循环在9分钟内完成工作,但是我想通过使用生产者/消费者模式来改进它。关于如何在c#中使用Nhibernate来实现这一点,有什么想法吗?

创建并行循环的正确方法

在多个执行线程之间共享一个NHibernate会话绝对不是一个好主意。尝试使用nhibernate分析器查找瓶颈或切换到StatelessSession而不是