最近重构行情服务端的框架,其中有一部分就是重写mysql线程池,线程池是一个很独立的东西,今天就拿出来给大家分享 怎样设计一个线程池 以及我是怎么做的.
这个很好理解 当程序需要大量计算 单核CPU跑到100% 这个时候可以将计算任务分解 分多个线程计算 如果我们有4核 那这个时候我们可以跑到400% 理想情况下 可以节省3倍的时间. 当然这个不是绝对的 具体情况要具体分析. 总而言之 是为了让程序充分打满CPU.
如果这个是web程序 异步绝对是提高并发的神器. 在我们的C++服务器中 也会有大量的阻塞任务 可能是读取mysql 可能是读取mongodb 或者任意需要同步等待完成的事情 那么在等待的时候 我们的工作线程是完全没法做别的工作的 这个时候我们就把等待的过程 变成一个任务 让线程池去做 主线程继续处理别的工作 等线程池完成之后 再接管任务 继续往下面执行.