libevent的event_config 配置相关接口

目录

  • 3. event_config 配置相关
    • 3.1 event_config_new
      • 功能
      • 备注
      • 原型
    • 3.2 event_config_free
      • 功能
      • 备注
      • 原型
    • 3.2 event_config_set_flag
      • 功能
      • 备注
      • 原型
    • 3.4 event_config_set_num_cpus_hint
      • 功能
      • 备注
      • 原型
    • 3.5 event_config_set_max_dispatch_interval
      • 功能
      • 备注
      • 原型
    • 3.6 event_config_require_features
      • 功能
      • 备注
      • 原型
    • 3.7 event_config_avoid_method
      • 功能
      • 备注
      • 原型

3. event_config 配置相关

3.1 event_config_new

功能

分配一个新的event_config,以用来初始化event_base。

备注

event_config可以用来改变event_base的相关特性。

原型

struct event_config *event_config_new(void);

3.2 event_config_free

功能

释放由event_config_new分配的event_config对象。

备注

原型

void event_config_free(struct event_config *cfg);

3.2 event_config_set_flag

功能

为event_config设置一个或者多个flag,而这些flag最终用来初始化event_base。

备注

可用的flag包括:

  • EVENT_BASE_FLAG_NOLOCK
    不为event_base分配锁,即使我们在构建的时候启用了多线程模式。设置这个flag将在并发调用event_base的函数时变得不安全或者不可用,但是在单线程模式下面则可以提升程序的性能。

  • EVENT_BASE_FLAG_IGNORE_ENV
    在初始化event_base的时候,不会通过系统环境变量来配置event_base的相关特性。

  • EVENT_BASE_FLAG_STARTUP_IOCP
    本flag仅在windows环境下可用,意思是在启动的时候启用iocp异步io模型。

  • EVENT_BASE_FLAG_NO_CACHE_TIME
    不要在每次事件循环准备运行超时回调时都检查当前时间,而是在每次超时回调之后检查,以便更加准确地获取到系统的当前时间。

  • EVENT_BASE_FLAG_EPOLL_USE_CHANGELIST

如果我们使用epoll作为底层的异步io模型,那么这个flag告诉libevent将添加和删除event的操作通过变更列表change-list缓存起来,这样避免在一个事件循环中多次对某个event进行添加删除操作,从而尽可能减少系统调用,提升系统性能。
本flag只有在epoll作为等底层的异步io模型的时候才有用。

  • EVENT_BASE_FLAG_PRECISE_TIMER
    通常,Libevent 使用我们拥有的最快的单调定时器来实现其时间和超时代码。然而,如果设置了这个标志,我们将使用效率较低但更精确的定时器(假设存在这样一个定时器)。

  • EVENT_BASE_FLAG_EPOLL_DISALLOW_TIMERFD
    epoll会使用timerfd作为更精确的定时器,这个flag将禁止这么做。

  • EVENT_BASE_FLAG_USE_SIGNALFD
    epoll会使用signalfd作为更精确的定时器,这个flag将禁止这么做。

原型

int event_config_set_flag(struct event_config *cfg, int flag);

3.4 event_config_set_num_cpus_hint

功能

设置系统中CPU数量的提示。这个参数影响线程池中线程的数量,以便来优化系统的性能。

备注

原型

int event_config_set_num_cpus_hint(struct event_config *cfg, int cpus);

3.5 event_config_set_max_dispatch_interval

功能

用于设置事件处理器最大调度间隔和事件回调次数限制。这个函数允许你指定在调度事件处理器检查新的事件之前等待的最长时间间隔或者等待事件回调次数超过限制。

备注

通常情况下,事件处理器会在事件就绪时立即进行处理,但有时候你可能希望限制事件处理器的调度频率,以避免过于频繁地处理事件。通过设置最大调度间隔,你可以控制事件处理器在一段时间内最多等待多久来处理事件。

这个函数的作用是为事件处理器设置一个最大的调度间隔,以控制事件处理的频率,避免过于频繁地调用事件处理器。

这个选项能够减少潜在的高优先级事件, 避免低优先级事件阻碍我们及时处理高优先级事件,但是由于处理激活事件受到了限制,因此它的吞吐量将减小, 需要小心使用。

原型

int event_config_set_max_dispatch_interval(struct event_config *cfg,const struct timeval *max_interval, int max_callbacks,int min_priority);

3.6 event_config_require_features

功能

设置应用希望libevent使用的底层异步io模型具备的特性。

备注

特性列表参考1.5。

原型

int event_config_require_features(struct event_config *cfg, int feature);

3.7 event_config_avoid_method

功能

用于告诉libevent不应该使用的底层异步io模型。

备注

其中method 包括:

  • epoll
  • select
  • evport
  • kqueue
  • devpoll
  • poll
  • win32
  • wepoll

原型

int event_config_avoid_method(struct event_config *cfg, const char *method);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/48148.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【JavaScript 算法】图的遍历:理解图的结构

🔥 个人主页:空白诗 文章目录 一、深度优先搜索(DFS)深度优先搜索的步骤深度优先搜索的JavaScript实现 二、广度优先搜索(BFS)广度优先搜索的步骤 三、应用场景四、总结 图的遍历是图论中的基本操作之一&am…

院内影像一体化平台PACS源码,C#语言的PACS/RIS系统,二级医院应用案例

全院级PACS系统源码,一体化应用系统整合,满足放射、超声、内窥镜中心、病理、检验等多个科室的工作流程和需求,为不同科室提供专业的解决方案,实现了全院乃至区域内信息互联互通、数据统一存储与管理等功能,做到以病人…

浪漫情怀:红酒中的诗意与情感

在生活的点滴细节中,总有些元素能触动我们内心较柔软的地方,唤起那份深深的浪漫情怀。而红酒,便是这其中的一种神奇媒介。它以其不同的色泽、香气和口感,让人沉醉其中,感受那份诗意与情感的交织。今天,就让…

C语言 | Leetcode C语言题解之第237题删除链表中的节点

题目: 题解: /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/void deleteNode(struct ListNode* node) {struct ListNode * p node->next;int temp;temp node->val;node->val…

Kotlin 协程简化回调

suspend 和 suspendCoroutine 实现 suspendCoroutine函数必须在协程作用域或挂起函数中才能调用,它接收一个Lambda表达式参数,主要作用是将当前协程立即挂起,然后在一个普通的线程中执行Lambda表达式中的代码。Lambda表达式的参数列表上会传…

常见排序算法总结

文章目录 比较排序冒泡排序选择排序插入排序归并排序快速排序堆排序希尔排序 非比较排序(桶排序)计数排序基数排序 比较排序 冒泡排序 嵌套循环,每次内层循环执行时,数组的每两个元素交换,将一个最大/小的数排到数组…

AIGC代码学习记录

本文主要记录不同的SD模型代码中实现的一些细节,如text2img,img2img,inpaint等等 1. 文生图 第一步:生成随机的latent feature (n,4,64,64);n为生成的图片个数; 第二步:对于prompt用clip生成特征,正向提示…

PDF-Extract-Kit (PDF内容抽取开源项目)

Github 地址:https://github.com/opendatalab/PDF-Extract-Kit 整体介绍 PDF文档中包含大量知识信息,例如文本、表格、图像、公式等。此外,PDF的文档布局也相当复杂,页眉、页脚、表格标题、图片标题等等,提取高质量的…

C++:聚合类、嵌套类、局部类、union类详细介绍与分析

聚合类 (1)What(什么是聚合类) 本质是一个自定义类型的数据结构(结构体或类),但聚合类有以下特性: 所有的成员都是public没有任何构造函数没有基类类内部没有初始值 (2)Why(聚合类的作用&…

ES6 正则的扩展(十九)

1. 正则表达式字面量改进 特性:在 ES6 中,正则表达式字面量允许在字符串中使用斜杠(/)作为分隔符。 用法:简化正则表达式的书写。 const regex1 /foo/; const regex2 /foo/g; // 全局搜索2. u 修饰符(U…

python调用chrome浏览器自动化如何选择元素

功能描述:在对话框输入文字,并发送。 注意: # 定位到多行文本输入框并输入内容。在selenium 4版本中,元素定位需要填写父元素和子元素名。 textarea driver.find_element(By.CSS_SELECTOR,textarea.el-textarea__inner) from …

前端出发能走多远——从一个网络请求开始

当通过浏览器输入一个网址时,浏览器经历了一些列的过程,最终将网页展示给用户。这个过程是如何进行的呢?我们可以通过一个简单的例子来了解这个过程。 假设我们输入了一个网址 https://www.example.com,我们可以通过浏览器的开发…

2024.04最新 鹦鹉优化算法 (PO) 开源MATLAB代码

!!!只需要代码的直接跳转到最后一节,有开源代码 1.算法简介2.灵感来源与核心思想2.1 灵感来源2.2 核心思想 3.主要步骤3.1 种群初始化3.2 觅食行为3.3 停留行为3.4 交流行为3.5 对陌生人的恐惧行为 4.伪代码与核心代码4.1流程图与伪代码流程图伪代码 4.2 核心代码(P…

nodejs下载+react安装

一、nodejs安装 1、nodejs下载 具体安装可参考连接:2023最新版Node.js下载安装及环境配置教程(非常详细)从零基础入门到精通,看完这一篇就够了_nodejs安装及环境配置-CSDN博客 下载地址:Node.js — 下载 Node.js 测…

ubuntu 更新源

前言 实现一键替换在线源 一键更新源 ubuntu 全球镜像站以下支持现有ubuntu 20&#xff0c;22&#xff0c;24 echo "Delete the default source" rm -rf /etc/apt/sources.listecho "Build a new source" cat <<EOF>>/etc/apt/sources.li…

微信小程序 button样式设置为图片的方法

微信小程序 button样式设置为图片的方法 background-image background-size与background-repeat与border:none;是button必须的 <view style" position: relative;"><button class"customer-service-btn" style"background-image: url(./st…

MVC架构在Web开发中的实现

MVC架构在Web开发中的实现 1、MVC架构概述2、MVC架构的实现 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 在Web开发领域&#xff0c;MVC&#xff08;Model-View-Controller&#xff09;架构模式是一种广泛使用的软件设计模式&#xff0c…

【学习笔记】虚幻SkeletalMesh学习(一)基础介绍

文章目录 零、前言一、资源介绍1.1 骨架资源1.2 骨架网格体资源 二、UE4中的定义2.1 骨骼数据2.2 模型网格数据 三、渲染3.1 RenderData的初始化3.2 渲染对象的创建3.3 渲染对象的更新3.3.1 游戏线程的更新&#xff08;*FSkeletalMeshObjectGPUSkin::Update*&#xff09;3.3.2 …

Android11 framework 禁止三方应用开机自启动

Android11应用自启动限制 大纲 Android11应用自启动限制分析验证猜想&#xff1a;Android11 AOSP是否自带禁止三方应用监听BOOT_COMPLETED​方案禁止执行非系统应用监听到BOOT_COMPLETED​后的代码逻辑在执行启动时判断其启动的广播接收器一棍子打死方案&#xff08;慎用&#…

Spring Cloud-Eureka-02

什么是Eureka Eureka是Netflix开源的一款服务发现与治理框架。在微服务架构中&#xff0c;服务的数量庞大且不断变化&#xff0c;因此需要一种机制来管理和发现服务。Eureka提供了一种简单而强大的方式来实现服务的注册、发现和负载均衡。它包括Eureka Server和Eureka Client两…