并行计算多线程常见问题

1、超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。

解决方法

1)关闭数据库连接,connection.close,connection.dispose

2) 增加线程池的最大线程数,延长连接回收时间:Data Source=。。。 ;Initial Catalog=。。。;Persist Security Info=True;User ID=。。。;Password=。。。;connect Timeout=120;Max Pool Size=512; Min Pool Size=5

2、事务(进程 ID 65)与另一个进程被死锁在 锁 | 通信缓冲区 资源上,并且已被选作死锁

出现以上两个问题后我修改了代码。

我原先用的是并行计算,

 Parallel.For(0, Length, i =>{....});

后来改成在里面使用Task

   List<Task> taskList = new List<Task>();

  Parallel.For(0, Length, i =>{Task task = new Task(() =>{...}

taskList.Add(task);
task.Start();

); 

原文地址:https://www.cnblogs.com/windy86/p/2779369.html