转载请标明出处;

  最近在看redis的代码,发现了有关函数指针的部分,想把它记下来。

  在redis中有类似下面的定义,利用typedef 定义了一个新的类型,这种类型是一个函数:

typedef void aeFileProc(struct aeEventLoop *eventLoop, int fd, void *clientData, int mask);

  然后可以用这个类型定义一个指针,这个指针指向一个函数,具体redis中使用如下(具体redis的源码解析,后面的文章中还会提到):

    aeFileProc *rfileProc;
aeFileProc *wfileProc;
 int aeCreateFileEvent(aeEventLoop *eventLoop, int fd, int mask,
aeFileProc *proc, void *clientData)
{
if (fd >= eventLoop->setsize) {
errno = ERANGE;
return AE_ERR;
}
aeFileEvent *fe = &eventLoop->events[fd]; if (aeApiAddEvent(eventLoop, fd, mask) == -)
return AE_ERR;
fe->mask |= mask;
if (mask & AE_READABLE) fe->rfileProc = proc;
if (mask & AE_WRITABLE) fe->wfileProc = proc;
fe->clientData = clientData;
if (fd > eventLoop->maxfd)
eventLoop->maxfd = fd;
return AE_OK;
}

最新文章

  1. [WPF系列]-数据邦定之DataTemplate 使用 DataTrigger 来应用属性值
  2. Activity 属性设置大全
  3. 网站tomcat配置
  4. iphone获取sim卡信息
  5. ubuntu安装软件的方式
  6. tomcat bio nio apr 模式性能测试
  7. JavaWeb程序利用Servlet的对SQLserver增删改查操作
  8. C语言获取系统时间的函数
  9. 指导手册06:HBase安装部署
  10. CancellationTokenSource 和 CancellationToken 取消线程
  11. qhfl-4 注册-登录-认证
  12. MySQL:锁
  13. SQL中的每一张表都必须设有主键吗
  14. 关于数据库不适合docker的原因(摘抄)
  15. 算法笔记 #007# Backtracking
  16. phpStorm 8.0.3 设置
  17. SSL - 简介
  18. tkinter入门,canvas实现百度,抖音,加载
  19. JavaScript设计模式—工厂模式
  20. Discuz常见小问题-如何修改顶部导航

热门文章

  1. OpenGL中各种坐标系的理解[转]
  2. ITERATOR(迭代器)设计模式
  3. hiho_1290_demo_day
  4. easyui dialog
  5. unicode 和 utf-8 的关系和解释
  6. js上下滚屏效果,代码通过测试
  7. Java Annotation 及几个常用开源项目注解原理简析
  8. Nodejs开发框架Express3.0开发手记–从零开始
  9. CentOS7+JDK8编译Hadoop2.6.4
  10. Java基础:多线程