Linux C
iteye_10262
这个作者很懒,什么都没留下…
展开
-
Linux queue.h之TAILQ队列分析
这两天想看看memcached的实现,所以先学习了libevent,使用起来还是比较简单的,其实是对select/poll/kqueue等的封装,学习libevent过程中又遇到了linux下队列的使用,简单分析如下,权当做记录:libevent中的例子中使用的是FreeBSD下的queue.h,在linux的/usr/include/sys/queue.h也有该头文件,但是是一个缩减版本...2008-12-12 18:20:06 · 325 阅读 · 0 评论 -
TCP Socket Performance issue
1.In general, it is more efficient for the application to write large messages and have them fragmented and reassembled by IP, than to have the application write multiple times.原因就在于系统调用system_cal...原创 2009-06-23 23:13:29 · 138 阅读 · 0 评论 -
测试Lighttpd accept的惊群现象
lighttpd里面采用的是prefork的模型,在fork进程之前就已经创建好了listen socket那么fork了进程池之后,所有进程都有一份自己独立的listen socket fd,但实际上这个独立的fd 对应的确是一个文件表项,即实际上任然是一个共享的文件描述符在阻塞模型中,各进程分别通过accept阻塞,等待连接到达,当一个连接到达时,所有的进程都会被唤醒,但只...2009-05-08 14:54:04 · 188 阅读 · 0 评论 -
简单封装一下epoll
按照lighttpd的方式封装了一下epoll,打算以后就直接这么用了,虽然简陋了点,不过很容易修改event.h头文件[code="c"]#include #define BV(x) (1 fdarray = calloc(maxfds , sizeof(*ev->fdarray)); ev->maxfds = maxfds; ev->epoll_fd=epol...2009-05-06 17:15:24 · 176 阅读 · 0 评论 -
lighttpd学习笔记二
记录一下lighttpd的事件处理机制,这个基本上就是和libevent差不多lighttpd事件处理的全局数据结构主要有[code="c"]typedef struct fdevents { fdevent_handler_t type; //事件处理类型,lighttpd通过配置文件获取 fdnode **fdarray; //回调事件,参数等保...2009-05-06 10:27:21 · 208 阅读 · 0 评论 -
lighttpd 学习笔记一
从server.c的main函数看起,启动流程大体如下:server_init 函数初始化lighttpd 的server 数据结构,涉及到其中一些buffer,array的结构初始化工作,主要参考的数据结构buffer,array,chunkqueue等等通过启动参数-f 读取配置文件 config_read[code="c"]if (!i_am_root && (g...2009-05-04 16:24:49 · 532 阅读 · 0 评论 -
我也研究下云风的垃圾回收库
在网上闲逛时发现了一个云风写的垃圾回收库和源码学习文档,我也一起研究一下,一方面弥补一下我对gc知识理解的不足,另一方面督促自己把这个不足1000行代码确足够诡异的迷你gc库看完,搞清楚原理。参考:源码地址:http://manualgc.googlecode.com/svn/trunk/另外一位同学写的分析文章:http://www.cppblog.com/darkdestiny...2009-03-21 16:19:49 · 108 阅读 · 0 评论 -
Memcached源码分析(线程模型)
目前网上关于memcached的分析主要是内存管理部分,下面对memcached的线程模型做下简单分析有不对的地方还请大家指正,对memcahced和libevent不熟悉的请先google之先看下memcahced启动时线程处理的流程[img]http://bachmozart.iteye.com/upload/attachment/81342/167202a5-1214-33c...2009-03-05 19:58:33 · 141 阅读 · 0 评论 -
Linux 时间函数使用备忘
学了忘,忘了还得学,简单记录下1. time_t time(time_t *tloc);time函数返回从1970年1月1日0点以来的秒数.存储在time_t结构之中把 这个printf("%ld",time(0)) 保存编译加到watch -n 1 后面,看看效果2.int gettimeofday(struct timeval *tv, struct timez...原创 2009-03-02 19:55:16 · 109 阅读 · 0 评论 -
链式hashmap实现笔记
Memcached里的Hashmap实现是一个简单的链式存储方式,简单记录一下链式hashmap的结构比较简单,基本上可以理解为一个一维线性空间,每个空间称作一个bucket,每个bucket又是一个链表结构,这个链表结构上的所有元素的key的hash值是相同的,所以被分配在一个bucket里。hashmap存储时首先根据key计算hash得到对应bucket,然后加入该bucket中...2009-02-23 22:10:39 · 675 阅读 · 0 评论 -
Linux UDP EchoServer守护进程编写
平时工作中主要用java,不过还是对Linux非常喜爱,虽然学习时间有限,每天还是能学点小东西,呵呵,写了一个HelloWorld版的Linux守护进程,启动后监听UDP端口做简单的echo backServer代码[code="c"]#include#include#include#include#include#include#include#i...2008-11-13 14:57:13 · 312 阅读 · 0 评论