线程池理解
Linux 多线程编程之 线程池 的原理和一个简单的C实现,提高对多线程编 程的认知,同步处理等操作,以及如何在实际项目中高效的利用多线程开 发。 1. 线程池介绍 为什么需要线程池??? 目前的大多数网络服务器,包括Web服务器、Email服务器以及数据库服务 器等都具有一个共同点,就是单位时间内必须处理数目巨大的连接请求, 但处理时间却相对较短。 传统多线程方案中我们采用的服务器模型则是一旦接受到请求之后,即创 建一个新的线程,由该线程执行任务。任务执行完毕后,线程退出,这就 是是“即时创建,即时销毁”的策略。尽管与创建进程相比,创建线程的时 间已经大大的缩短,但是如果提交给线程的任务是执行时间较短,而且执 行次数极其频繁,那么服务器将处于不停的创建线程,销毁线程的状态, 这笔开销将是不可忽略的。 线程池为线程生命周期开销问题和资源不足问题提供了解决方案。通过对 多个任务重用线程,线程创建的开销被分摊到了多个任务上。其好处是, 因为在请求到达时线程已经存在,所以无意中也消除了线程创建所带来的 延迟。这样,就可以立即为请求服务,使应用程序响应更快。而且,通过 适当地调整线程池中的线程数目,也就是当请求的数目超过某个阈值时, 就强制其它任何新到的请求一直等待,直到获得一个线程来处理为止,从 而可以防止资源不足。 2. 线程池结构 2.1 线程池任务结点结构