随笔分类 - Linux C编程
摘要:线程池的原理及意义,请移步这篇博文:http://www.cnblogs.com/venow/archive/2012/11/22/2779667.html 下面,介绍的这个线程池与上面提到的那个线程池有一部分相似的地方。 主要区别为: 1、线程池中的每个线程都有自己的互斥量和条件变量,而不是线程池共享一个。 2、线程池中的线程在程序结束时,等待线程池中线程停止的机制不同。 该程序主要由两个文件构成,分别为ThreadPool.h和ThreadPool.cpp文件。 ThreadPool.h文件:#define MAXT_IN_POOL 200#define BUSY_...
阅读全文
摘要:定义: epoll是Linux内核为处理大批句柄而作改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著的减少程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。因为它会复用文件描述符集合来传递结果而不是迫使开发者每次等待事件之前都必须重新准备要被侦听的文件描述符集合,另一个原因就是获取事件的时候,它无须遍历整个被侦听的描述符集,只要遍历那些被内核IO事件异步唤醒而加入Ready队列的描述符集合就行了。epoll除了提供select\poll那种IO事件的电平触发(Level Triggered)外,还提供了边沿触发(Edge Triggered).
阅读全文
摘要:大多数的网络服务器,包括Web服务器都具有一个特点,就是单位时间内必须处理数目巨大的连接请求,但是处理时间却是比较短的。在传统的多线程服务器模型中是这样实现的:一旦有个请求到达,就创建一个新的线程,由该线程执行任务,任务执行完毕之后,线程就退出。这就是"即时创建,即时销毁"的策略。尽管与创建进程相比,创建线程的时间已经大大的缩短,但是如果提交给线程的任务是执行时间较短,而且执行次数非常频繁,那么服务器就将处于一个不停的创建线程和销毁线程的状态。这笔开销是不可忽略的,尤其是线程执行的时间非常非常短的情况。 线程池就是为了解决上述问题的,它的实现原理是这样的:在应用程序启动之后
阅读全文
浙公网安备 33010602011771号