回调函数的理解

article/2025/8/24 9:18:23
int yuxiangrousi = 0; // 全局变量:鱼香肉丝(酱油量)// 回调函数:妈妈处理酱油(将酱油加入鱼香肉丝)
void mother_callback(int new_jiangyou)
{yuxiangrousi += new_jiangyou; // 把酱油放进鱼香肉丝
}// 孩子买酱油(模拟异步操作,如另一个线程)
// 参数:妈妈的回调函数(处理酱油的函数)
void son_dajiangyou(void(*mother_callback)(int jiangyou_bought))
{int temp_jiangyou;temp_jiangyou = by_jiangyou(); // 假设调用买酱油的函数(未定义,模拟获取酱油量)mother_callback(temp_jiangyou); // 调用妈妈的回调函数处理酱油
}// 妈妈做饭的主逻辑
void mother_cooking(void)
{cook_yuxiangshousi(); // 先做鱼香肉丝(未定义,模拟烹饪步骤)son_dajiangyou(mother_callback); // 让孩子去买酱油,回来后调用回调处理cook_soup(); // 做西红柿鸡蛋汤(未定义,模拟后续步骤)
}// 辅助函数(假设存在,实际需根据场景实现)
// int by_jiangyou(void);       // 买酱油(获取酱油量,未实现)
// void cook_yuxiangshousi(void); // 做鱼香肉丝(未实现)
// void cook_soup(void);         // 做汤(未实现)

代码解释:

  1. 全局变量yuxiangrousi记录鱼香肉丝中的酱油量(初始为 0)。
  2. 回调函数 mother_callback
    • 接收新买的酱油量(new_jiangyou),更新全局变量(模拟将酱油加入菜品)。
  3. son_dajiangyou 函数
    • 模拟孩子买酱油的过程(异步操作,如另一个线程)。
    • 调用by_jiangyou获取酱油量(模拟购买),然后通过回调函数(mother_callback)通知妈妈处理酱油。
  4. mother_cooking 函数
    • 主逻辑:先做鱼香肉丝(此时酱油量为 0),然后让孩子买酱油(异步,不阻塞主线程),同时继续做汤(模拟并行操作)。
    • 当孩子买完酱油(son_dajiangyou执行完毕),自动调用mother_callback更新鱼香肉丝的酱油量(模拟异步回调的效果)。

关键概念(结合回调函数):

  • 异步模拟son_dajiangyou 模拟异步任务(如线程),mother_callback 作为回调函数,在任务完成后(买酱油回来)被调用。
  • 回调机制:妈妈(主线程)在做饭时,不需要等待孩子买酱油(避免阻塞),而是通过回调函数在酱油回来后处理,实现 “并行” 操作(实际在单线程中是顺序执行,但逻辑上模拟异步)。

自己理解


http://www.hkcw.cn/article/csPGbvdMMl.shtml

相关文章

python字符重复一次 2023年信息素养大赛复赛/决赛真题 小学组/初中组 python编程挑战赛 真题详细解析

python字符重复一次 2023全国青少年信息素养大赛Python编程挑战赛复赛真题解析 博主推荐 所有考级比赛学习相关资料合集【推荐收藏】1、Python比赛 信息素养大赛Python编程挑战赛 蓝桥杯python选拔赛真题详解

【笔记】suna部署之获取 Supabase API key 和 project URL

#工作记录 Supabase | The Open Source Firebase Alternative 一、注册与登录 方式一:GitHub 授权登录 在登录页面选择 “继续使用 GitHub” ,跳转到 GitHub 授权页面(如图 5 所示)。确认 “Supabase 的想要访问您的 [账户名] 帐…

从法律层面剖析危化品证书:两证一证背后的安全逻辑

《安全生产法》第 24 条明确规定,危化品单位主要负责人和安全管理人员 “必须考核合格方可上岗”。这并非仅仅是行政要求,而是通过法律来筑牢安全防线。在某危化品仓库爆炸事故中,由于负责人未持证,导致事故责任升级,企…

MMR搜索和LangChain整合Milvus实战

引言 在现代信息检索系统的构建过程中,搜索策略的选择往往决定了用户体验的质量。相似度搜索与MMR最大边界相关搜索作为两种主流技术方案,各自承担着不同的使命:前者专注于精确匹配,后者致力于平衡相关性与多样性。 本文将通过深入…

C++容器进阶:深入解析unordered_map与unordered_set的前世今生

目录 🚀 引言:现代C容器的王者 🎯 学习路径 第一章:哈希表的数学魔法 1.1 哈希表的基本概念 哈希表的数学模型 1.2 哈希函数的设计艺术 第二章:unordered_map的深度解析 2.1 unordered_map的设计哲学 2.2 uno…

TDengine 运维——巡检工具(安装前检查)

简介 本文档旨在介绍 TDengine 安装部署前后配套的巡检工具。 相关工具的功能简介: 工具名称功能简介安装前检查部署前对 TDengine 安装部署的依赖要素进行安装前检查安装前预配置部署前对 TDengine 安装部署的依赖要素进行安装前预配置安装部署指定环境安装部署…

两个频率比较接近的简谐振动叠加后会产生拍形

两个频率比较接近的简谐振动叠加后会产生拍形。 import numpy as np import matplotlib.pyplot as plt# Parameters f1 10.0 # Frequency of the first vibration (Hz) f2 10.5 # Frequency of the second vibration (Hz) t_max 10 # Time range (seconds) t np.linsp…

安科瑞Acrelcloud-6200系统:智慧路灯安全用电监控平台架构解析

安科瑞顾强———Acrelgq 智慧路灯作为智慧城市与新基建的核心载体,集成了大量异元异构电子设备,其供电安全与能效管理面临电压多样、权属分散、扩展性不足等挑战。本文提出一种融合统一供电、分路计量、智能防护与远程监控的解决方案,通过构…

706万彩票大奖无人认领 兑奖期限已过

706万彩票大奖无人认领 兑奖期限已过!5月7日,广东东莞福彩官微发布了一篇寻找东莞706万大奖得主的文章。然而20多天过去了,大奖得主仍未现身兑奖。5月29日下午,东莞市福彩发行中心表示,如果当天未见得主前来领奖,将视为弃奖处理,奖金将用于扶老、助残等公益事业。据报道…

Scratch节日 | 拯救屈原 | 端午节

端午节快乐! 这款特别为端午节打造的Scratch游戏 《拯救屈原》,将带你走进古代中国,感受历史与文化的魅力! 🏮 游戏介绍 扮演勇敢的探险者,穿越时空回到古代,解锁谜题,完成任务&…

上海一款罕见肿瘤靶向药获批 填补治疗空白

上海一款罕见肿瘤靶向药获批 填补治疗空白。国家药品监督管理局通过优先审评审批程序批准了上海复星医药产业发展有限公司申报的1类创新药芦沃美替尼片(商品名:复迈宁)。这是上海今年第6款获批上市的国产1类创新药,也是近期又一款获批上市的罕见病用药。复迈宁本次获批的两…

【开发技巧指北】IDEA修改默认绑定Maven的仓库地址

【开发技巧指北】IDEA修改默认绑定Maven的仓库地址 Microsoft Windows 11 家庭中文版 IIntelliJ IDEA 2025.1.1.1 默认的IDEA是有自己捆绑的Maven的(这是修改完毕的截图) 修改默认的Maven配置,路径是IDEA安装路径下的plugins D:\Softwares\I…

小程序为什么要安装SSL安全证书

小程序需要部署SSL安全证书,这是小程序开发及运营的强制性要求,也是保障用户数据安全、提升用户体验和满足平台规范的必要措施。 一、平台强制要求 微信小程序官方规范 微信小程序明确要求所有网络请求必须通过HTTPS协议传输,服务器域名需配…

Nest全栈到失业(三):半小时图书管理系统-User

用户模块 创建用户 先使用nest g resource user --no-spec 创建一个用户的模块,并选择他的CRUD操作 写一个注册接口 import { Controller, Post, Body } from nestjs/common; import { UserService } from ./user.service; import { RegisterUserDto } from ./dto/register-us…

美创专家分享医疗数据安全分类分级实践与探索

医疗数据安全分类分级 近日,由浙江卫生信息学会主办的2025年卫生健康网络数据安全培训会(宁波站)顺利举办,美创科技专家许钰钢受邀分享《医疗数据安全分类分级实践与探索》,系统解析医疗行业数据安全分类分级的实施必…

Vision Transformer网络结构

0.前言 参考CSDN大佬(太阳花的小绿豆)的代码,梳理了一下vit的网络结构,代码地址如下: deep-learning-for-image-processing/pytorch_classification/vision_transformer at master WZMIAOMIAO/deep-learning-for-image-processing GitHub …

start-local:一键本地启动 Elasticsearch 和 Kibana

start-local:一键本地启动 Elasticsearch 和 Kibana start-local Try Elasticsearch and Kibana locally 项目地址: https://gitcode.com/gh_mirrors/st/start-local 项目介绍 start-local 是一个开源项目,它通过一个简单的 shell 脚本&#xff…

time-ghc-modules:快速定位Haskell编译性能瓶颈

time-ghc-modules:快速定位Haskell编译性能瓶颈 time-ghc-modules Analyze GHC .dump-timings files 项目地址: https://gitcode.com/gh_mirrors/ti/time-ghc-modules 项目介绍 在现代软件开发中,性能优化始终是一个核心话题。特别是对于使用Has…

【Cursor】配置全局 Rules:让 AI 生成的代码更符合你的开发风格

在现代软件开发中,AI 工具(如 Cursor AI)已经成为提升开发效率的重要助手。然而,为了让这些工具生成的代码更加贴合我们的开发习惯和项目需求,合理配置 全局 Rules 是至关重要的一步。本文将深入探讨如何通过全局 Rules 的配置,优化 AI 生成代码的质量、一致性和安全性。…

一文了解K8S(Kubernates)

K8S(Kubernates) 知识目录 一、K8S 1. 概述 Kubernetes 是一个可移植、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化。 Kubernetes 拥有一个庞大且快速增长的生态,其服务、支持和工具…