﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-时光隧道</title><link>http://www.cppblog.com/thinke365/</link><description /><language>zh-cn</language><lastBuildDate>Tue, 07 Apr 2026 17:38:11 GMT</lastBuildDate><pubDate>Tue, 07 Apr 2026 17:38:11 GMT</pubDate><ttl>60</ttl><item><title>test</title><link>http://www.cppblog.com/thinke365/archive/2009/10/24/99333.html</link><dc:creator>thinke365</dc:creator><author>thinke365</author><pubDate>Fri, 23 Oct 2009 17:35:00 GMT</pubDate><guid>http://www.cppblog.com/thinke365/archive/2009/10/24/99333.html</guid><wfw:comment>http://www.cppblog.com/thinke365/comments/99333.html</wfw:comment><comments>http://www.cppblog.com/thinke365/archive/2009/10/24/99333.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/thinke365/comments/commentRss/99333.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/thinke365/services/trackbacks/99333.html</trackback:ping><description><![CDATA[test<img src ="http://www.cppblog.com/thinke365/aggbug/99333.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/thinke365/" target="_blank">thinke365</a> 2009-10-24 01:35 <a href="http://www.cppblog.com/thinke365/archive/2009/10/24/99333.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>memcached精髓</title><link>http://www.cppblog.com/thinke365/archive/2009/07/30/91649.html</link><dc:creator>thinke365</dc:creator><author>thinke365</author><pubDate>Wed, 29 Jul 2009 17:44:00 GMT</pubDate><guid>http://www.cppblog.com/thinke365/archive/2009/07/30/91649.html</guid><wfw:comment>http://www.cppblog.com/thinke365/comments/91649.html</wfw:comment><comments>http://www.cppblog.com/thinke365/archive/2009/07/30/91649.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/thinke365/comments/commentRss/91649.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/thinke365/services/trackbacks/91649.html</trackback:ping><description><![CDATA[通常采用malloc和free来管理内存，但是容易造成内存碎片，反而加重操作系统内存管理的负担。 memcached底层的内存管理机制，<font color=red>使用了slab</font><br><font color=blue size=-1>slab的基本思想，是把内存划分为一定大小的块，并把尺寸大小相同的块划分为组。</font><br>slab还有重复使用已分配内存的功能，<font color=green>也就是说分配的内存不会被释放，只会被重复利用。</font>这就减少申请和销毁内存所消耗的时间?<br>memcached维护着一个<span style="COLOR: red">空闲slab块列表</span>，存数据的时候，会选择一个最合适的块，存入数据。(这个列表会有多大? 16G/ 1M = 16M = <font color=red>2<sup>14</sup></font> ) memcached中 key/value 的Map是怎么组织的? 可以直接使用STL中的map来组织?  <img src ="http://www.cppblog.com/thinke365/aggbug/91649.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/thinke365/" target="_blank">thinke365</a> 2009-07-30 01:44 <a href="http://www.cppblog.com/thinke365/archive/2009/07/30/91649.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>高性能事件机制</title><link>http://www.cppblog.com/thinke365/archive/2009/07/28/91543.html</link><dc:creator>thinke365</dc:creator><author>thinke365</author><pubDate>Tue, 28 Jul 2009 15:57:00 GMT</pubDate><guid>http://www.cppblog.com/thinke365/archive/2009/07/28/91543.html</guid><wfw:comment>http://www.cppblog.com/thinke365/comments/91543.html</wfw:comment><comments>http://www.cppblog.com/thinke365/archive/2009/07/28/91543.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/thinke365/comments/commentRss/91543.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/thinke365/services/trackbacks/91543.html</trackback:ping><description><![CDATA[<p>有多种基于事件机制的系统调用。<br>epoll<br>select<br>kqueue<br><br>libevent可以处理三种事件：计时器，信号和IO事件。<br>计时器的实现采用的是RBTree，可以实现对计时器高效的查询，排序和删除。 到1.4版本，实现的数据结构已经改为<font color=red>Heap</font>，可以提高效率。(具体的测试统计数据呢?)<br><br>epoll的操作只涉及4个函数：epoll_create, epoll_ctl, close和epoll_wait。<br>是Linux设备：<span style="COLOR: red">/dev/epoll<br></span></p>
</font><font color=blue>可以去了解下游戏服务器的性能权衡</font><br>使用select或poll，当在线人数上升时，性能会以2-3次方的指数下降?因此每台服务器都有一个明显的上限? // 这些数据可以收集一些的。 <br>网络模型， Socket连接<br>epoll有两种工作模式：分别是LT(Level Triggeredd)和ET(Edge Triggered)。 LT模式下同时支持 阻塞和非阻塞 Socket，ET为高速模式，只支持非阻塞 Socket。 <br>采用select模型，一个进程最多可打开的Socket数目是1024，当然可以通过修改内核代码加以扩大，但这样做麻烦，而且不具有可行性。<br>epoll是变相的 nio实现，<span style="COLOR: #0000ff">采用了回调机制，只处理激活状态的Socket</span>，因为只有激活的Socket才可以通过fd调用操作。<br>select，处理Socket连接时，则需要遍历整个Socket列表(不管是以数组的形式存放，还是以链表的形式存放)。 但是在LAN内，<span style="COLOR: #0000ff">当几乎所有连接都处于激活状态的情绪下，select的性能甚至比epoll还要好</span>。但是在WAN中，即只有少数 Socket连接处于激活状态的情绪下， epoll具有明显优势。<br><br><font color=red size=-1>memcached使用了libevent库，但是使用的是里面的哪种 事件处理机制呢?</font><br><br>
<img src ="http://www.cppblog.com/thinke365/aggbug/91543.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/thinke365/" target="_blank">thinke365</a> 2009-07-28 23:57 <a href="http://www.cppblog.com/thinke365/archive/2009/07/28/91543.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>