lua-epoll

Lua的epoll模块
授权协议 Apache
开发语言 Lua
所属分类 程序开发、 高性能网络开发库
软件类型 开源软件
地区 国产
投 递 者 艾泰
操作系统 Linux
开源组织
适用人群 未知
 软件概览

Lua的epoll模块

更多细节,请查看sample.lua

API:

ok,err=epoll.setnonblocking(fd)

设置一个文件描述符非阻塞。

epfd,err=epoll.create()

创建一个 epoll 文件描述符。

ok,err=epoll.register(epfd,fd,eventmask)

把目标文件描述符 fd 注册到由 epfd 引用的 epoll 实例上并把相应的事件 event 与内部的 fd 相链接。

ok,err=epoll.modify(epfd,fd,eventmask)

更改目标文件描述符 fd 相关联的事件 event

ok,err=epoll.unregister(epfd,fd)

从由 epfd 引用的 epoll 实例中删除目标文件描述符 fd

events,err=epoll.wait(epfd,timeout,max_events)

在一个 epoll 文件描述符上等待 I/O 事件。

ok,err=epoll.close(epfd)

关闭一个 epoll 文件描述符。

  • 在2016年第二届 OpenResty 的全球开发者大会上看到了一个比较有意思的项目 lua-resty-repl,后来听闻一些开发者看了项目的介绍后还是觉得一头雾水,不知道怎么使用。这篇文章主要是介绍一下这个项目的使用方法。 根据作者介绍这是一个简单和容易调试运行在 OpenResty 的 lua。 安装 luarocks 根据 官网 介绍,快速开始的姿势如下: $ wget https://l

  • 先上全部代码吧 nginx.conf worker_processes auto; user hubs; # 日志级别调试时可设为notice,生产环境请设为error error_log /usr/local/openresty/nginx/logs/error.log notice; events { use epoll; worker_connec

  • 安装nginx及lua # 安装依赖 yum -y install make gcc gcc-c++ wget crontabs zlib zlib-devel \ openssl openssl-devel perl patch bzip2 ca-certificates # Stable version 下载nginx,openssl,luajit2源码 wget http://ngin

  • 安装 本文章基于centos8安装 环境安装 这里openresty是已源码的方式安装,需要安装依赖环境。 您必须将这些库 perl 5.6.1+, libpcre, libssl安装在您的电脑之中。 对于 Linux来说, 您需要确认使用 ldconfig 命令,让其在您的系统环境路径中能找到它们 yum -y install openssl perl* gcc pcre* wget 下载安装

 相关资料
  • 函数原型 #include <sys/epoll.h> int epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout); 参数 events 出参,记录准备好的fd。该参数为向量(数组),由调用方分配空间。 maxevents 最大监听fd。epoll_wait会检测从0

  • 函数原型 #include <sys/epoll.h> int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event); 参数 epfd 是[[epoll_create|epoll_create]]的返回值。 op 表示动作,它由三个宏来表示 EPOLL_CTL_ADD:注册新的fd到epfd中; EPOLL_CTL_MOD:修

  • 函数原型 #include <sys/epoll.h> int epoll_create(int size); 参数 size参数自从Linux 2.6以后被忽略了。 epoll_create1 #include <sys/epoll.h> int epoll_create1(int flags);

  • 主要函数 函数 描述 [[epoll_create epoll_create]] 创建一个epoll的文件描述符 [[epoll_ctl epoll_ctl]] epoll的事件注册函数 [[epoll_wait epoll_wait]] 收集在epoll监控的事件中已经发送的事件 结构体 epoll_event typedef union epoll_data { void *ptr;

  • 简介 Epoll是poll的改进版,更加高效,能同时处理大量文件描述符,跟高并发有关,Nginx就是充分利用了epoll的特性。讲这些没用,我们先了解poll是什么。 Poll Poll本质上是Linux系统调用,其接口为int poll(struct pollfd *fds,nfds_t nfds, int timeout),作用是监控资源是否可用。 举个例子,一个Web服务器建了多个socke

  • Epoll是Linux内核为处理大批量句柄而作了改进的poll。要使用epoll只需要这三个系统调用:epoll_create(2), epoll_ctl(2), epoll_wait(2)。它是在2.5.44内核中被引进的(epoll(4) is a new API introduced in Linux kernel 2.5.44),在2.6内核中得到广泛应用,例如LigHttpd。 epol