摘要:
epoll - I/O event notification facility在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且,在linux/posix_types.h头文件有这样的声明:#define __FD_SETSIZE 1024表示select最多同时监听1024个fd,当然,可以通过修改头文件再重编译内核来扩大这个数目... 阅读全文
摘要:
mk_clock.h定义一系列宏,声明一系列函数mk_clock.c_next_buffer(char*,char** arg),如果第一个参数指向的指针与第二个参数的arg[0]相等,则返回 arg[1];否则返回arg[0]mk_clock_log_set_timemk_clock_header_set_time 阅读全文
摘要:
epoll编辑epoll是Linux内核为处理大批量句柄而作了改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。目 录1简介2优点2.1支持一个进程打开大数目的socket描述符2.2IO效率不随FD数目增加而线性下降2.3使用mmap加速内核与用户空间的消息传递3内核微调4使用5系统调用1简介使用epoll进行高性能网络编程epoll是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率,因为它会复用文件描述符集 阅读全文
摘要:
mk_cache.h定义一个静态函数,参数是一个线程的pthread_key_t,然后返回此线程局部数据(返回一个void*指针)mk_cache.c定义函数mk_cache_thread_init调用pthread_setspecific7次给进程设置局部数据,此函数第一个参数是pthread_key_t,第二个参数是void*指针 阅读全文
摘要:
定义一些宏,声明一些函数主要是关于插件方面的。 阅读全文
摘要:
专为GNU / Linux设计的一个轻量级,功能强大的Web服务器,它是一个只有50KB的、功能强大而且速度非常快的 Web 服务器软件,支持 Linux 系统。采用混合网络模型和线程epoll,具备很好的可扩展性和伸缩性,支持每秒数千访问连接。 阅读全文
摘要:
首先安装好centos的 mini版本然后以root用户进入系统,1 启用网卡ifconfigeth0up2 然后用vi打开/etc/sysconfig/network-scripts/ifcfg-eth0DEVICE="eth0"HWADDR="08:00:27:BE:80:A6"NM_CONTROLLED="yes"ONBOOT="yes"//默认为noBOOTPROTO="dhcp"//默认这一项没有3 安装gcc,g++,vi等等yum -y install gccyum -y inst 阅读全文
摘要:
首先安装centos成功后进入然后此时centos的网络连接方式是nat1 首先ifconfigeth0up#启用网卡2 root用户然后打开vi/etc/sysconfig/network-scripts/ifcfg-eth0DEVICE="eth0"HWADDR="08:00:27:BE:80:A6"NM_CONTROLLED="yes"ONBOOT="yes"//默认为noBOOTPROTO="dhcp"//默认这一项没有3 阅读全文
摘要:
explicit 只对构造函数起作用,用来抑制隐式转换。如: class A { A(int a); }; int Function(A a); 当调用 Function(2) 的时候,2 会隐式转换为 A 类型。这种情况常常不是程序员想要的结果,所以,要避免之,就可以这样写: class A { explicit A(int a); }; int Function(A a); 这样,当调用 Function(2) 的时候,编译器会给出错误信息(除非 Function 有个以 int 为参数的重载形式),这... 阅读全文
摘要:
虚析构函数的使用(转载!)分类:C/C++2010-01-22 17:214465人阅读评论(2)收藏举报deletedestructorclassconstructor测试c一、当你的类准备给别人继承时要提供虚析构函数考虑下面例子:class A{public: A(){cout //给出一个没有虚拟析构函数的基类classBase{public: Base() { std::cout//给出一个没有虚拟析构函数的基类classBase{public: Base() { std::cout//给出一个有虚拟析构函数的基类classBase{public: Base() { 阅读全文