再议回调函数

muduo源码分析--事件回调层次是怎么传递的Tcpserver Channel TcpConnection muduo库中的源码并不是很多,但是回调的处理非常巧妙,这里从事件激活(某个套接字上可读/可写)以后这个层次看回调怎么被调用的。 首先从最大的EventLoop说起:         EventLoop中拥有事件链表(每一个元素都是Channel),在loop函数中调用epoll_wait系统调用的时候,将EpollPollr中EventList,将这个链表中激活事件添加到EventLoop中 阅读详情
一、回调函数的概念
    回调函数是一个程序员不能显式调用的函数;通过将回调函数的地址传给调用者从而实现调用。

二两个demo

----------------------------------------------------------------------------------------------------------------
void caller(void(*ptr)())
{
ptr(); /* 调用ptr指向的函数 */
}

void func();

int main()
{
p = func;
caller(p);    /* 传递函数地址到caller ,caller调用指针p指向的函数*/
}

 如果赋了不同的值给p(不同函数地址),那么调用者将调用不同地址的函数。赋值可以发生在运行时,这样使你能实现动态绑定。
-------------------------------------------------------------------------------------------------------------

typedef int(*CallBack)(char *p) ; // 声明CallBack 类型的函数指针

int A(char *p); // 回调函数

B(CallBack lpCall,char *pProvide)
{
 ........... // B 的自己实现功能语句
 lpCall(PpProvide); // 借助回调完成的功能 ,也就是A函数来处理的。
 ........... // B 的自己实现功能语句
}
// -------------- 使用例子 -------------
main()
{
char *p = "hello!";
B(A, p);
}

参考:

http://www.vckbase.com/document/viewdoc/?id=195
http://gethelp.devx.com/techtips/cpp_pro/10min/10min0300.asp
http://tech.ccidnet.com/art/3839/20060314/476731_1.html
再议libcurl编程 那是2年前用libcurl了,我肯定好久不用的知识,放置久了就会遗忘,现在我又重拾起这个知识点,重头再来,至于前面的基础知识,可以参考我的  http://blog.youkuaiyun.com/pbymw8iwm/article/details/6675754        假设你要获取URL所表示的远程主机上的资源。你需要写一段程序用来完成数据传输,你可能希望直接保存接收到的数据而不是简单的在 阅读详情

相关推荐

RTOS 时间管理篇-软定时器 xTimer 处理周期性定时事件

1)FreeRTOS 提供的软件定时器支持单次模式和周期模式,周期模式的定时事件每隔一断时间就触发一次一段代码的执行。2)周期定时事件适合完成 状态定时再查询,定时状态切换的功能。3)软定时器 xTimer 精度与 系统时间节拍的精度、定时器任务的优先级、定时器回调函数的设计、创建的软定时器的数量相关。合理调整这些因素可以改善 xTimer 精度。

物联网老王的博客,公众号同名 555

C语言入门第十六篇,再议指针

前面我们介绍了指针的基本性质,今天我们再深入的研究指针的内容。 我们之前了解了指针就是指向变量,那些只是皮毛,想要真正掌握指针就看下面的内容理解的怎么样了。 **指针和数组** 之前介绍了指针可以通过自己地址的加和减去访问其他地址里面的变量内容,其中一种场景就是指针指向了数组(指针并不能随意的去访问内存地址中的内容,这设计到了操作系统的知识,这里不再赘述),下面我们来看看实际的例子:

N1neSun的博客 826

ArduPilot飞控系统代码解读及架构分析

ArduPilot飞控系统是一个复杂而强大的系统,通过模块化设计和分层架构,实现了灵活的飞行控制功能。模块化设计: 各个功能模块相对独立,便于维护和扩展多种飞行模式: 满足不同的飞行需求强大的控制算法: 实现稳定的姿态和位置控制完善的安全机制: 保障飞行安全丰富的配置选项: 通过参数系统实现高度可定制性这种架构使ArduPilot能够适应从简单的多旋翼到复杂的自主飞行器等各种应用场景。类结构分析:Mode基类 (mode.h/mode.cpp)

fengforky的专栏 3019

学习之路五:再议自定义时钟类(跨线程间的访问操作) → 异步操作

  还记得两个月之前写了一篇通过线程来自定义时钟类,当时以为这是什么高深的技术呢,其实这其中的原理就是异步六种模式中一种!   链接如下:学习之路三:关于运用单线程和委托以及事件自定义Timer类   几天前偶然打开这篇文章看了看,有位兄弟说使用异步实现会比较好,于是就用了异步方式重构自己的时钟类 !   在这期间遇到了一个问题:就是跨线程间的访问操作!     1.时钟代码如...

aimanbing4182的博客 101

告别混乱接线!用EPLAN 3D布局图,手把手教你搞定电气柜的3D建模与自动布线

本文详细介绍了如何使用EPLAN 3D布局图进行电气柜的3D建模与自动布线,帮助工程师告别混乱接线。从项目准备、基础结构建模到智能设备布局与逻辑定义,再到高级布线技术与问题排查,提供了一套完整的实战指南。通过EPLAN的3D功能,显著提升设计效率与系统可靠性。

weixin_30680385的博客 340

Diebold-Mariano检验

给定两个预测的预测结果,我们希望比较他们的预测结果,以用于预测模型精度的比较。 Diebold-Mariano检验本质是一个t检验,用于检验替代预测的两个损失序列的平均值是否相等。即,它是一系列损失差的零均值的t检验。在存在自相关的情况下,它使用损失差分时间序列标准差的自相关一致性估计。 注意,在使用DM检验式时,假设损失序列是平稳的。 另外,DM检验在小样本数据时往往会拒绝零假设。对于小样本数据,推荐Harvey, Leybourne and Newbold (HLN)检验【1】; 参考文献 【1】htt

weixin_43948357的博客 6565

C语言一一函数指针的奥秘

我们都知道指针是C语言的灵魂,而今天再议函数指针的奥秘。这个复杂的玩意儿到底有何用处?通常函数指针常用作另一个函数的参数(回调函数),告诉该函数要使用哪个函数。 我们来进一步研究函数指针。首先,什么是函数指针呢? 函数指针 假设有一个指向int类型变量的指针,该指针储存着这个int类型变量储存在内存位置的地址。函数也是有地址的,因为函数的机器语言实现由载入内存的代码组成,指向函数的指针中储存着函数...

chen1415886044的博客 816

STM32CubeIDE中文注释变乱码终极解决方案:3步设置永久解决锟斤拷问题!

你是否在STM32CubeIDE中遇到过这样的崩溃场景?——精心编写的中文注释在重新生成代码后变成“锟斤拷”乱码,不仅影响代码可读性,反复修改更是浪费大量时间!作为STM32开发者,我曾被这个问题困扰许久,试过修改软件设置、工程编码却始终治标不治本。直到发现这个基于Java环境变量的终极解决方案,才彻底解决了中文乱码难题。

smart_boy__的博客 2958

jquery.ui.draggable中文文档jquery 自由拖拽类~study~

JQuery UI Draggable插件用来使选中的元素可以通过鼠标拖动. Draggable的元素受影响css: ui-draggable, 拖动过程中的css: ui-draggable-dragging. 如果需要的不仅仅是拖, 而是一个完整的拖放功能, 请参阅JQuery UI 的Droppable插件, 该插件提供了一个draggable放的目标. 所有的回调函数(start, sto

dunyanan1的专栏 1万+

Augustus手动安装教程

本文记载了如何结合conda手动安装Augustus

m0_65437087的博客 1256

Palantir 凭什么两年涨 20 倍?深度解析解决 AI 幻觉的 “本体论“ 核心原理

本文深度解析了Palantir本体(Ontology)的核心原理及其在企业AI应用中的革命性价值。本体通过构建结构化的语义层与动态执行层,将企业分散的数字资产(数据集、虚拟表、模型)映射为现实世界的数字孪生,使大模型能够在**严格的业务规则与数据边界内**进行推理与决策,从而从架构层面彻底解决AI幻觉问题。这一技术架构不仅帮助Palantir实现股价两年增长20倍、市值突破4000亿美金的商业成功,更成为SAP、Salesforce等ERP巨头争相模仿的下一代企业智能标准范式。通过航空业飞机故障应急处理等实

program哲学 225

jsonp跨域问题

jsonp跨域问题 网上找了些关于Jsonp的文章看,写的都有点混乱。在这里好好整合下。 一、名词解释 百度百科 同源策略,它是由Netscape提出的一个著名的安全策略。现在所有支JavaScript的浏览器都会使用这个策略。 所谓同源是指,域名,协议,端口相同。当一个浏览器的两个tab页中分别打开来 百度和谷歌的页面当浏览器的百度tab

gloryzyf 578

Megatron-LM从头训练大语言模型:并行策略图示【Tensor并行、Pipeline并行、Data并行、Sequence并行、virtual_pipeline并行、Context并行】

节点包含的层每GPU的参数内存每GPU的激活内存节点0Stage 0层1-1212层参数/2 (TP切分)8k序列激活 (CP切分)节点1Stage 1层13-2412层参数/2 (TP切分)8k序列激活 (CP切分)节点2Stage 2层25-3612层参数/2 (TP切分)8k序列激活 (CP切分)节点3Stage 3层37-4812层参数/2 (TP切分)8k序列激活 (CP切分)负载均衡:每个节点处理相同数量的层(12层)内存优化。

u013250861的博客 285

JsonP跨域问题研究

网上找了些关于Jsonp的文章看,写的都有点混乱。在这里好好整合下。 一、名词解释 百度百科 同源策略,它是由Netscape提出的一个著名的安全策略。现在所有支JavaScript的浏览器都会使用这个策略。 所谓同源是指,域名,协议,端口相同。当一个浏览器的两个tab页中分别打开来 百度和谷歌的页面当浏览器的百度tab页执行一个脚本的时候会检查这脚本是属于哪个页面的,即检查是

624

GEE APP:时间序列影像批处理工具:按月筛选与智能导出解决方案出工具

本文介绍了一个基于Google Earth Engine(GEE)开发的智能时序影像处理工具,可高效处理遥感影像时间序列数据。该工具采用三栏式交互布局,包含控制面板、地图显示和缩略图预览区域。核心功能包括:1)灵活的时间筛选机制,支持年度范围选择和月份批量选择;2)智能影像筛选算法,基于云量、空间覆盖等条件自动选择最佳影像;3)交互式缩略图预览,支持点击加载完整影像;4)自动化批量导出系统,实现标准化命名和统一存储。工具可广泛应用于农业监测、城市扩张研究、生态环境评估等领域,显著提高遥感数据预处理效率,确保

此星光明博客 113

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

php 7+新特性

本文摘自php中文网 PHP5.2至5.6的新增功能详解 php7新增功能 1、在use语句增加了group支持 use FooLibrary\Bar\Baz\{ ClassA, ClassB, ClassC, ClassD as Fizbo }; 2、增加??操作符 isset($_GET['mykey']) ? $_GET['mykey'] : "笨重"...

aochijing0046的博客 294

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Python数据类型 -- 答疑

答疑课之二:再议数据结构与数据类型 1.list,dict,tuple之它们其实是好基友 1.1 没有最优秀的数据结构,只有最适用的 1.2 了解每个结构的特点才能活学活用 1.3 它们相互转换如此简单 2.“推倒式”(列表推导)与再议 3.排序 3.1 sorted 3.2 list之sort方法 3.2.1 key最好用 3.2.2

菜心儿爸爸 436

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

LIO_SAM程序实现原理学习笔记(五)--FeatureExtraction.cpp

FeatureExtraction.cpp流程分析

So____的博客 558

amcl初探

刚开始学习定位,大概过了一遍amcl,开始记录下自己看的。 基本架构

咩吃咩 4606

stagefright与opencore对比

1引言 Android froyo版本多媒体引擎做了变动,新添加了stagefright框架,并且默认情况android选择stagefright,弃用之前的opencore,仅仅对opencore中的omx-component部分做了引用。 Stagefright自android2.0后才添加,其稳定性有待商榷,是否存在bug也未知,opencore自android诞生起便存在,稳定性有保障

Howie的专栏 1111

jquery.ui中文文档翻译----draggable

暂时没有编排格式, 等ui库全部翻译完成之后, 统一制作电子书. 希望大家加入, 感谢支持. [概览][原文翻译]JQuery UI Draggable插件用来使选中的元素可以通过鼠标拖动.Draggable的元素受影响css: ui-draggable, 拖动过程中的css: ui-draggable-dragging.如果需要的不仅仅是拖, 而是一个完整的拖放功能, 请参阅JQuer...

yuanlanxiaup 117
上一篇: 心目中的编程高手
下一篇: 函数指针与软件设计
lphpc
博客等级 码龄22年 32粉丝 86原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值