- 博客(4)
- 资源 (2)
- 收藏
- 关注
原创 select socket相关
<br /><br />1.socket缓冲满了,就会将数据复制到内核缓冲向目标发送,然后socket缓冲又可以再接收更多数据,如果内核缓冲向目标发送数据速度很快(马上完成,不存在网络阻塞等),那么从socket缓冲复制数据到内核缓冲,内核缓冲向目标发送,socket缓冲被清空再接收更多数据这个动作不存在“阻塞”的话,那么就算发送更多数据也不会返回WSAWOULDBLOCK,内网一般是100Mbps,延迟小于10ms,不会出现数据阻塞情况一点不奇怪,内网传输数据能到达10MB/S的速度呢。<
2011-01-28 14:21:00 1105
原创 Linux网络编程 -- select/epoll得知socket有数据可读,如何判断数据全部被读取完毕?
补充一点:只有在使用epoll ET(Edge Trigger)模式的时候,才需要关注数据是否读取完毕了。使用select或者epoll的LT模式,其实根本不用关注数据是否读完了,select/epoll检测到有数据可读去读就OK了。<br /> <br />这里有两种做法:<br /> 1. 针对TCP,调用recv方法,根据recv方法的返回值,如果返回值小于我们指定的recv buffer的大小,则认为数据已经全部接收完成。在Linux epoll的manual中,也有类似的描述:<br />
2011-01-28 14:21:00 10126
原创 多线程服务器的常用编程模型
<br />这篇文章原本是前一篇博客《多线程服务器的常用编程模型》(以下简称《常用模型》)计划中的一节,今天终于写完了。<br />“服务器开发”包罗万象,本文所指的“服务器开发”的含义请见《常用模型》一文,一句话形容是:跑在多核机器上的 Linux 用户态的没有用户界面的长期运行的网络应用程序。“长期运行”的意思不是指程序 7x24 不重启,而是程序不会因为无事可做而退出,它会等着下一个请求的到来。例如 wget 不是长期运行的,httpd 是长期运行的。<br />正名<br />与前文相同,本文的“进
2011-01-07 14:12:00 1726
原创 使用多线程编程的几个常见问题
<br />、工作线程还是用户界面线程?<br />对于一个多线程编程高手来说,没有两难的选择,因为不论工作线程还是用户界面线程,其本质是完全相同的。所不同的只是用户界面线程为用户增加了消息循环机制,而使用工作线程,你自己也很容易能做到这点。由于增加了消息队列,用户界面线程可以与窗口类协同工作,并方便地使用各类消息处理;但相对工作线程要占用更多的系统资源,对于一个使用大量线程的应用,你在使用线程前还是得考虑一下选择使用哪种线程。<br />对于没有界面交互的后台工作而言(打印,存盘,收发网络信息),使用工作
2011-01-04 18:43:00 3488
c++标准库——boost程序库导论.chm
2009-12-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人