none
一个并发和事务的问题 RRS feed

  • 问题

  • 假设有一个表A,记录有点多,我每次取1000条,对其进行foreach处理, 将处理之后的结果用事务写入3个表 B,C,D,

    1000条处理完,再去取1000,如此循环。。。。。

    怎么用多线程加速,单线程太慢了,我用的是用线程池数据访问用的Ado.net entity framework 。。。。。 但是有问题

     

    给我一点伪代码

    谢谢!


    dfang

    Main:

    MethodA();

     

     

    void MethodA()

    {

     List list = new List();

     if(list.Count <1)

     { ..... 从数据表A取1000条、}

     ThreadPool.SetMaxThreads(20,200);

     ThreadPool.QueueUserWorkItem(MethodB,list);

     

     

    }

     

    void MethodB(List list)

    {

     foreach(var l in list)

     {

    。。。。。。对l进行处理,结果用事务存入3个表

    }

    }

     

    我要怎么判断list中的项目不会被线程池里的线程重复处理,怎么保证处理完了再用MethodA取1000条数据

    谢谢!


    • 已移动 Min ZhuModerator 2011年6月30日 1:14 data question (发件人:.NET Framework 一般性问题讨论区)
    2011年6月29日 2:14

全部回复

  • hi~

    你如果是 .Net Framework 3.5 版本以上~ 建議可以使用 Parallel.foreach 或 Parallel.For 來完成你所想要的~

    參考網址 : http://www.dotblogs.com.tw/nobel12/archive/2011/03/14/21828.aspx


    逐步學習,逐夢踏實;腳步要踩穩,這樣下一步才不會跌倒。 http://www.dotblogs.com.tw/nobel12
    2011年7月4日 14:42