并行计算多线程常见问题

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/archive/2012/11/20/2779369.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值