首页 > 其他分享 >libevent使用

libevent使用

时间:2023-06-10 22:00:50浏览次数:31  
标签:cfg libevent base IOCP 使用 include config event

// testlibevent.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include "event2/event.h"
#include "event2/listener.h"
#include "event2/thread.h"
#include <event2/listener.h>
#include <iostream>

void listen_cb(struct evconnlistener *, evutil_socket_t, struct sockaddr *, int socklen, void *)
{
    printf("lister...\n");
}

int main()
{
    WSADATA wsa;
    WSAStartup(MAKEWORD(2,2),&wsa);

    event_config *cfg = event_config_new();
    //设置IOCP,不然windows默认用的是select
    event_config_set_flag(cfg, EVENT_BASE_FLAG_STARTUP_IOCP);
    //初始化线程
    evthread_use_windows_threads();
    SYSTEM_INFO si;
    GetSystemInfo(&si);
    event_config_set_num_cpus_hint(cfg, si.dwNumberOfProcessors);


    event_base* base = event_base_new_with_config(cfg);
    event_config_free(cfg);
    if (base)
    {
        std::cout << "Hello World!\n";
        sockaddr_in sin;
        memset(&sin, 0, sizeof(sin));
        sin.sin_family = AF_INET;
        sin.sin_port = htons(1993);

        auto *ev = evconnlistener_new_bind(base, listen_cb, base,
            LEV_OPT_REUSEABLE | LEV_OPT_CLOSE_ON_FREE, //地址重用,listen关闭,关闭socket
            10,
            (sockaddr*)&sin,
            sizeof(sin)
        );

        event_base_dispatch(base);
        evconnlistener_free(ev);
    }
    
    if (base)
    {
        event_base_free(base);
    }
    system("pause");
}

 

 

 

此文是windows下libevent的调用。

event_config_set_flag(cfg, EVENT_BASE_FLAG_STARTUP_IOCP);
这一行表示调用IOCP,否则默认是调用select。

event_base* base = event_base_new_with_config(cfg); 则是生成一个支持IOCP的示例,否则可以用默认的函数 event_base_new();

evconnlistener_new_bind 表示listener,bind,(accept?)

listen_cb 是当什么时候触发?

LEV_OPT_REUSEABLE | LEV_OPT_CLOSE_ON_FREE 分别表示 地址重用;关闭event 会自动关闭socket。

event_base_dispatch:

标签:cfg,libevent,base,IOCP,使用,include,config,event
From: https://www.cnblogs.com/jlyg/p/17472038.html

相关文章

  • Python Joblib库使用学习总结
    实践环境python3.6.2Joblib简介Joblib是一组在Python中提供轻量级流水线的工具。特别是:函数的透明磁盘缓存和延迟重新计算(记忆模式)简单易用的并行计算Joblib已被优化得很快速,很健壮了,特别是在大数据上,并对numpy数组进行了特定的优化。主要功能输出值的透明快速磁盘......
  • 使用matlab的LTIViewer完成系统稳定性判定
    如题:一、建立模型:z=[-3];p=[0-2-5];k=3;G=zpk(z,p,k)G=3(s+3)-------------s(s+2)(s+5)Continuous-timezero/pole/gainmodel.ModelProperties>>Gf=feedback(G,1)Gf=3(s+3)--------------------------------......
  • 小米6刷origin os使用joviincar教程
    小米6刷originos使用joviincar教程此教程尽量简化流程,在不用扩容分区的情况下直接刷入originos实现joviincar的使用。1、前期准备1)解锁米62)工具集准备Adb工具集(https://www.xitongzhijia.net/soft/218036.html)Originos卡刷包(https://www.ziyuanyo.com/html/34......
  • 关于刚使用ABP.VNext遇到的坑
    使用的是开源的项目,项目链接:https://github.com/abpframework/abp-samples/tree/master/BookStore-Mvc-Efcore跑的项目是这个大项目下的小项目,在文件夹里面找到这个文件夹就是我用的这个项目文件喽BookStore-Mvc-EfCore 第一个肯定就是生成数据库啦项目第一步生成数据库......
  • 使用 Vue 和 Swiper 实现中间大两边小的轮播图效果
    以下是使用Vue和Swiper实现中间大两边小的轮播图效果的代码:1.安装Swiper:npminstallswiper--save 2.在Vue组件中引入Swiper:importSwiperfrom'swiper';import'swiper/css/swiper.css'; 3.在Vue组件中使用Swiper:<template><divclass="swip......
  • mybatis-plus是什么框架,使用起来简单吗?文末有彩蛋
    mybatis框架我们都熟悉了,是用来操作数据库的属于ORM框架。mybatis-plus是什么框架,看名称和手机似的,带有plus一定是加强版,其官网是:MyBatis-Plus(baomidou.com)开始mybatis-plus的实践吧。一、环境及依赖这里,基于springboot集成mybatis-plus。先看下具体的版本,springboot:2.3.3......
  • linux环境下使用压缩包、docker、docker-compose搭建nacos集群
    本篇文章介绍如何在linux系统上安装nacos和搭建集群,本文章使用的是centos7系统。本机搭建nacos1、准备工作Nacos依赖 Java需要三台linux服务器,条件有限的可以安装虚拟机,内存有限那就只需要安装一台虚拟机,然后开启不同端口就可以,所以最低的条件是你需要安装一个centos7版本的虚拟......
  • RD client远程桌面使用教程手机怎么连接服务器远程桌面?
    大家好啊,现在很多游戏、应用为了体验感好、方便使用都实现了多端同步,服务器远程连接也不例外,今天小驰给你们分享手机连接服务器远程桌面的操作方法不管是安卓还是苹果手机,咱们都需要用到一个软件,叫做RDclient(RemoteDesktop),先从安卓讲起安卓版RDclient下载地址:https://pan.baid......
  • 使用clickhouse和mysql查询时间对比
    业务场景,对于数据量过大的数据统计,跑脚本会很吃力先建立一个clickhouse的mysql引擎表关联本地mysql数据表,以下这个表会自动同步mysql主表数据CREATETABLEtest_table(idUInt32,messageString,contentString,remarkString,order_idString,user_idUInt......
  • 使用python插入一亿数据到mysql
    应用场景,数据库数据达到千万以后,做数据分析执行脚本开始变慢,所以用到clickhouse,先插入一亿数据测试先安装pip支持mysql.connector,我安装的python3.11pip3installmysql-connector-python再使用pip3list查看是否安装成功以下是mysql创建表语句CREATETABLE`test_table`(......