zoukankan      html  css  js  c++  java
  • 回调函数(callback)是什么?

    一个常见的定义:由自己定义、由系统调用的函数,称为回调函数。
    上层/底层的概念:系统提供的,通常称为底层,如Windows SDK的API。自己写的代码,称为上层。一般是上层调用下层,如调用API监视键盘。Callback的特殊之处是,你写的函数,由下层来调用。
    为什么会理解困难:我通常把这原因归为,翻译的“回调”,太烂。语言阻碍了理解。

    一种应用场景:

    你是上层,我是下层。我写函数,你调用。注意,现在我写了一个函数,里面有一个死循环。当然不用担心,这个死循环是从摄像头抓帧的,你随时可以按Esc退出。
    我对抓到的每帧,检测图像里目标。这里假设目标是草莓。所以,问题简化成:【我摘草莓,你吃草莓,我为你服务(调用)】。

    刚开始,你拿到草莓直接鲜吃,所以,把草莓交给【吃草莓】接口;
    后来,你吃不完,想用草莓做酱,所以,把草莓交给【草莓酱】接口;
    再后来,你想把草莓做沙拉,所以,把草莓传给【做沙拉】接口;
    ……

    两个问题:
    1. 你的需求经常变化。
    2. 别人可能用这个摘草莓的接口。

    所以,大家决定商量一下,你别叫(调用)我了,我叫(调用)你吧。
    把你的各种接口交(传递)给我,我摘到草莓(预处理)后,再调你的接口。

    所以,事情变成了:原来,我在下你在上,是通常的传教士;后来觉得麻烦,
    我在上,你在下,变成了观音坐莲。这个特殊,叫做Callback。

    最后:
    如果你也遇到过这种死循环的接口,你会发现,其实传教士根本做不成。因
    为你一旦调用我,我就停不下来了……如何把摘到的草莓扔给你?除了Callback,
    就得是内存共享之类。

    本来是很简单的理解,写出来有点多。照顾非程序员人群,写的更多。总得来说,

    能问这个问题,说明你还没入门,目前这样理解,够了。


    from 知乎

    Keep it simple!
    作者:N3verL4nd
    知识共享,欢迎转载。
  • 相关阅读:
    kernel 单独编译模块
    Python实现图的经典DFS、BFS、Dijkstra、Floyd、Prim、Kruskal算法
    Python实现BFS和DFS
    dpdk 20.02 igb_uio.ko 编译
    Kubernetes 文档
    controller-runtime/FAQ.md
    kubebuilder2.0学习笔记——进阶使用
    cloud-init 导致虚拟机启动太慢
    关闭 cloud-init 服务
    centos7 安装 docker calico
  • 原文地址:https://www.cnblogs.com/lgh1992314/p/5834928.html
Copyright © 2011-2022 走看看