首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

在多线程中事务处理的迷惑

2012-03-18 
求助:在多线程中事务处理的迷惑方法A中有一个关于数据插入的事务处理。然后通过如下语句把方法A实现到100个

求助:在多线程中事务处理的迷惑
方法A中有一个关于数据插入的事务处理。然后通过如下语句把方法A实现到100个线程中。
  Thread workTicketThread;
   
  for (int i = 0; i < 100; i++) {

  workTicketThread = new Thread(new ThreadStart(A));
  }
这样的话,既然方法A中有事务处理,当运行事物处理时会对自动数据库上锁,那么线程1锁定了数据库后,线程2-100这99个线程中

的A方法将不能操作数据库,这样的话多线程是不是就没有意义了。。。不知道我理解的对不对?请高手解答








[解决办法]
第一个进入事务后,其它线程也可以访问数据库,但可能引起错误,对数据库操作,特别是写数据库,建议线程互斥,不要同时操作
[解决办法]
使用事务锁
多线程写同一张表,根据设计要求来的,不建议操作
大批量数据insert 使用sqlbulkcopy
是线程越多处理速度越快,线程多了频繁调度反而和降低性能
线程1处理n1——n2之间的记录;
线程2处理n2+1——n3之间的记录
new Thread((ThreadStart)delegate { test1(); }).Start();
new Thread((ThreadStart)delegate { test2(); }).Start();
new Thread((ThreadStart)delegate { test3(); }).Start();

热点排行