Buffer
muduo中的buffer指的是一般的应用层缓冲区,Buffer特指muduo::net::Buffer class
muduo的底层缓冲区使用的容器是vector,这里和实验室小伙伴讨论使用vector作为底层容器,开销会比较大,因为当容量不足时,会有大量拷贝开销。使用deque效率可能更高。
Thread Pool
总结:为了减少频繁的创建和销毁线程所带来的开销,先将线程创建好,不销毁,当有任务来了的时候,从线程池中选择一个线程去处理这个任务,就可以减少开销。
首先根据需要创建的线程数,创建这么多的线程,再创建一个任务队列。这些创建好的线程阻塞在任务队列上,当主线程收到某个任务后,就将该任务放到任务队列中,线程池中的线程从任务队列中取一个任务执行。
另外:当线程从队列取任务的时候,需要加锁,防止多个线程同时竞争同一个任务。
问题:
1、所谓的在任务队列中的task到底是什么?
2、从I/O事件来的时候,到最后处理该I/O事件,整个流程的具体过程
3、线程池中多个线程同时watch一个队列,性能是不是可以提升?如何提升呢?线程间使用互斥锁访问队列吗?