您的位置 首页 百科问答

ca来自llback是什360问答么意思?

回调函数,或简称回调(Callback即callthenback被主函数调用运听的观结市立村算后会返回主函数),是指通过参数将函数传递到其它代码的,某一块可执行代码的引用。

这晚城香脱肥益尼一设计允许了底层代码调用在高层定义的子程序。

回调的用途十分广泛。例如,假设有一个函数,其功能为读取配置文件并由文件内容设置对应的选项。

若这些选项由散列值所府变坏变向危创受本标记,则让这个函数接受一个回调会使得程序设计更加灵活:函数的调用者可以使用所希望的散演酸差丰适列算法,该算法由一个将选项名转变为散列值的回调函数实现;因此,回调允许函数调用者在运行时调整原始函数的行为部多罪特。

回调的另一种用途在于处理信片翻但山型控号或者类似物。例如一个POSIX程序可能在收到SIGTERM信号时不愿立即终止;为了保证一切运行良好,该程序可以将清理函数注册为SIGTERM祖音范则持降迫后粒岁径信号对应的回调。

回调亦可以用于控制一个函数是否作为:Xlib允许自定义的谓词用于决定程序是否希望处理特定的事件。

有两种类型的回调,它们在运行时控制数据流的方式不同:阻塞回调(也称短调资重言任拿干围身为同步回调或仅回调)和延迟回调(也称为异步回调别顾穿粮把)。

在函数返回之前调用阻塞回调(在下面的C示例中,它说明了阻塞回调,它是函数mai错由班于落输始永获放n),则可以在函数返回后调用延迟回调。延迟回调通常用于I/O操作或事件处理的上下文中,并且在多个线机吃汽程的情况下由中断或不同的线程调用。

由于其性质,阻塞回调可以在没有中断或多线程的情况下工作,这意垂味弱倒创无情合致味着阻塞回调通常不用于同步或将工作委托给另一个线程。

回调用于在窗口系统中对应用程序进行编程。在这种情况下,应用程序提供(引用)一个特定的自定斯华广布零文六负买命完义回调函数供操作系统调用,然后操作系统调用此特定于应用程序的函数以响应鼠标单击胜乱提及渐编视吧让讲或按键等事件。

这里的一个主要问题是权限和安全性的管理:虽然该函数是从操作系统调用的,但它不应以与系统相同的权限族技运行。这个问题的解决方案是使用保护环。

ca来自llback是什360问答么意思?

回调函数在实际中有许多作用。

假设有这样一种情况:我们要编写一个库,它提供了某些排序算法的实现(如冒泡排序、快速排序、shell排序、shake排序等等),为了能让库更加通用,不想在函数中嵌入排序逻辑,而让使用者来实现相应的逻辑。

回调可用于通知机制。例如,有时要在A程序中设置一个计时器,每到一定时间,A程序会得到相应的通知,但通知机制的实现者对A程序一无所知。

那么,就需一个具有特定原型的函数指针进行回调,通知A程序事件已经发生。实际上,API使用一个回调函数SetTimer来通知A程序。如果没有提供回调函数,它还会把一个消息发往程序的消息队列。

另一个使用回调机制的API函数是EnumWindow,它枚举屏幕上所有的顶层窗口,每个窗口都可以通过它调用另一个程序提供的函数,并传递窗口的处理程序。例如:如果被调用者返回一个值,就继续进行迭代;否则,退出。

EnumWindow并不关心被调用者在何处,也不关心被调用者用它传递的处理程序做了什么,它只关心返回值,因为基于返回值,它将继续执行或退出。

C语言的回调函数只能通过函数指针实现,在C++中则可以使用匿名函数(lambda)或仿函数(functor)作为回调函数。

上一篇 国泰民安的意思
下一篇 山东高考分数线普通类一段
扫一扫,手机访问

扫一扫,手机浏览