摘要: 由于尊重原著所以贴上链接,请大家点击查看:http://www.cnblogs.com/debian/archive/2012/02/16/2354454.htmlepoll_create函数实现源码分析http://blog.csdn.net/lmh12506/article/details/7556188Linux 2.6内核中提高网络I/O性能的新方法epoll正如我昨天在“Linux下各类TCP网络服务器的实现源代码”(http://zhoulifa.bokee.com/5345930.html)一文中提到的那样,I/O多路复用技术在比较多的TCP网络服务器中有使用,即比较多的用到se 阅读全文
posted @ 2013-03-31 22:20 夜浪 阅读(391) 评论(0) 推荐(0)
摘要: 构建现代的服务器应用程序需要以某种方法同时接收数百、数千甚至数万个事件,无论它们是内部请求还是网络连接,都要有效地处理它们的操作。有许多解决方 案,但是 libevent 库和 libev 库能够大大提高性能和事件处理能力。在本文中,我们要讨论在 UNIX® 应用程序中使用和部署这些解决方案所用的基本结构和方法。libev 和 libevent 都可以在高性能应用程序中使用,包括部署在 IBM Cloud 或 Amazon EC2 环境中的应用程序,这些应用程序需要支持大量并发客户端或操作。简介许多服务器部署(尤其是 web 服务器部署)面对的最大问题之一是必须能够处理大量连接。无论 阅读全文
posted @ 2013-03-31 21:48 夜浪 阅读(257) 评论(0) 推荐(0)
摘要: 这幅图是TCP的状态机,看了2个小时,分析总结如下:(1)CLOSED 状态时初始状态。(2)LISTEN:被动打开,服务器端的 状态变为LISTEN(监听)。被动打开的概念:连接的一端的应用程序通知操作系统,希望建立一个传入的连接。这时候操作系统为连接的这一端建立一个连 接。与之对应的是主动连接:应用程序通过主动打开请求来告诉操作系统建立一个连接。(3)SYNRECVD:服务器端收到SYN后,状态为SYN;发送SYN ACK;(4) SYN_SENTY:应用程序发送SYN后,状态为SYN_SENT;(5)ESTABLISHED:SYNRECVD收到ACK后,状态为ESTABLISHED; S 阅读全文
posted @ 2013-03-29 23:40 夜浪 阅读(186) 评论(0) 推荐(0)
摘要: 什么时候需要创建线程池呢?简单的说,如果一个应用需要频繁的创建和销毁线程,而任务执行的时间又非常短,这样线程创建和销毁的带来的开销就不容忽视,这时也是线程池该出场的机会了。如果线程创建和销毁时间相比任务执行时间可以忽略不计,则没有必要使用线程池了。下面是Linux系统下用C语言创建的一个线程池。线程池会维护一个任务链表(每个CThread_worker结构就是一个任务)。 pool_init()函数预先创建好max_thread_num个线程,每个线程执thread_routine ()函数。该函数中while (pool->cur_queue_size == 0) { pthread_ 阅读全文
posted @ 2013-03-29 22:53 夜浪 阅读(141) 评论(0) 推荐(0)