我这里有个完整的c/s项目,可能大了一点,但是用到的东西很全,是一个多线程的c/s项目, 你可以去看看
QTcpThreadPoolServiceTest.rar (2676 K) 下载次数:26 教程说明见
http://www.linuxidc.com/Linux/2012-10/71629.htmQT 的 信号、槽原生支持跨线程传递,其 QByteArray与C++11的shard_ptr均可用于跨线程数据块的生命周期管理。
试验中,设计了一个设置为CPU核心数的线程池,这个线程池可以异步接受N个数据生产者传入的数据,均衡的分配处理任务,处理后的数据返回给某1个或者几个消费者。有两种均衡方法。
一种是生产者粒度的均衡。同一个生产者的各批数据FIFO顺序不被打破,这需要判断,当处理线程队列中还有该生产者的数据时,不改变当前处理线程。
第二种是数据粒度的并行,某个生产者传来的数据被分配到不同的线程,不保证后到的数据后被处理(也可能先到的处理的慢,后到的快)。
说明在我的Blog内,本程序在 Win VC2010+QT 4.8.0 +IDE 嵌入式环境下编译通过,在Ubuntu 12.04 + Qt 4.8.1 下编译通过。编译方法:
首先,qmake, 而后 make 或者 nmake ,当然,也可在IDE下编译。