我想问的问题如下线程池是不是有很多种结构,因为我之前做的是做前端的
现在改做后端做一些服务器上的东西前两天,主管问我了不了解线程池,我就说不知道,
后来我就在找了一些关于这方面的东西看,我现在看的是别人写好的一个线程池的单元 uThreadPool看完之后,我个人感觉跟我用线程的方式并没有太多的差别因为我最近也做了一个通信的东西,用了多线程,其中有一个程序是保存数据到数据库里的我的实现方式是这样的先用 创建 TCP 服务器这里接收到客户端发送上来的数据,客户端可能会多个我一共创建了以下几个类类A 用于保存接收到的数据 这里用到临界区同步因为发送上来的数据是有编号的,不同的编号的数据分别保存到数据不同的表里
所以我还创建了 类 B 继承 TTHread 用于对接收到的按编号分开再保存到 类A 的另一个实例  
聊天信息  保存到实例 AA
登陆信息  保存到实例 BB
再创建 下面两个线程类
类 C 保存聊天信息  从AA 取出数据保存到数据库
类 D 保存登陆信息  从BB 取出数据保存到数据库这里的所有的线程都是并行的,
我就想问下,我这样的写法可以算是线程池吗????
第一个用于添加接收到的客户端的数据,因为TCP服务器封装好了,所以当接收到数据后就向

解决方案 »

  1.   

    还有加一个,就是所有的线程都是在窗体初始化的时间创建创建好的
    与TCP的服务器一起并行运行
      

  2.   

    http://blog.csdn.net/simonhehe/article/details/8471320
      

  3.   

    个人理解,“池”这个概念就是弄些现成的东西放那儿备用,而不是现用现建。不光线程池,别的池也是这样。例如,一个应用可能需要十几甚至几十个线程,但并非同时用。你可以一次创建好,这样最省事,但空间开销大。你也可以用一个建一个,用完就释放。这样最节省空间,但时间开销大,而且可能会有副作用。有的编程环境(例如 Javascript),你不能人为释放对象,得等系统自己清理。这时可以搞个小池子,例如事先创建几个线程,循环使用,几个线程就能顶几十个线程用。运行中发现池子不够大,可以临时加一个。这种动态池可以保证够用,还不至于弄些多余的浪费。我想这就是“池”的概念。feiba7288 的例子很形象,大致也是这个意思。
      

  4.   

    这个我是知道,没有那样做是主要还是因为写库会比较慢,还有原因是因为我只说了 保存的客户端,其实还有一转发的客户端我没有说是这样的,
    有一个客户端,这个客户端我不会,它只会发出UDP的日志信息我有一个接收这个UDP的转发客户端,主是我上面没有捍到的,
    这个客户端接收到UDP 再用TCP的方式发出去,发出去的就由我上面所说的保存客户端来做因为发UPD日志的客户端发的数据会很多,所以才做一个转发的,所以,在我的接收的保存的客户里面TCP客户端的连接并不会太多,像我现在做的TCP转发的客户端是同时开七个线程同时来发接收那边我只做一个线程去按,分开接收到的数据我也是用一个单独的线程,分开后再由相对类型的线程去保存
    这些线程都是并行的问题我到现在还是没有发现,
    我测试过,发一百万个UDP包出来,最多的丢包有一千多,最少的只有一百多个包 还算过的去吧
    测试的环境是局域网
    发送是用UDP客户端线程全速发
      

  5.   


    接收那边我只做一个线程去按,分开接收到的数据我也是用一个单独的线程,qkhhxkj102,接收部分能不能改成多个线程我不清楚,在客户端很多的情况下,分开接收到的数据最好还是用线程池的概念,那个时候效率就体现出来了。
    保存数据还是保留你现有的模式比较好,就两个线程在后台处理。