执行两万多次请求,把结果存入数据库,使用多线程,给个思路我用线程池做,有的时候会请求超时无限new Thread很快就会请求超时
、另外用Linq插入这两万多次请求的响应而来的字符串有没有压力

解决方案 »

  1.   

    使用队列,10条线程。2W条执行的作业全部放到队列里面。10条线程每次从队列里面获取1条执行,执行完毕后获取下1条。当队列里面没有数据时结束线程。
    因为要涉及多线程并发请求的情况,请注意使用lock并且在必要的地方使用doublecheck。
    我不清楚你写入数据库的数据是必须每次都写还是将数据汇总后再写入。如果是后者建议先在内存出进行汇总,最后写入数据库。
      

  2.   

    2种都是多线程,而且你用线程池也没问题。问题是用法不对,你不应该一次性把所有任务扔到线程池里面。你可以waitone等待任何一个线程完成任务后再加入新的任务。
      

  3.   

    谢谢gzdiablo.我用你的方法,做了一个小规模测试。100次请求平均花费20秒我又测试了1000次请求,花费了3分多,但似乎很容易超时,有什么办法可以解决?。
      

  4.   


    谁跟你说的?只有当资源没有竞争时,比如说你有十几个CPU,而且计算机体系结构非常高级,而且包括操作系统、数据库系统等等也非常高级,而且你的业务逻辑也不存在什么数据库事务隔离冲突之类的,等等条件都具备,你的所谓“十分之一的时间”的断言才能成立啊。怎么能这样来随便夸大多线程呢?线程不是这样去使用的!
      

  5.   

    多长时间内请求两万次?平均间隔差不多?用Linq不会有什么问题的(有内置事务)
    关键在于根据需求合理分工
    不是弄个两万的循环在那儿new Task另外还有个叫定时器东西