首页 > 编程知识 正文

阻塞式回调函数和延迟式回调函数一样吗,中断回调函数注意事项

时间:2023-05-05 01:58:04 阅读:251332 作者:3614

首先,有三种函数:

起始函数:大致可以等同于主函数

中间函数:中间函数把回调函数作为参数传递执行

回调函数:一个有独立功能的函数

怎么理解:

你到一个商店买东西,刚好你要的东西没有货,于是你在店员那里留下了你的电话,过了几天店里有货了,店员就打了你的电话,然后你接到电话后就到店里去取了货。

在这个例子里,你的电话号码就叫回调函数,你把电话留给店员就叫登记回调函数,店里后来有货了叫做 触发回调事件,店员给你打电话叫做 调用回调函数,你到店里去取货叫做 响应回调事件

# 回调函数def double(x): return x*2# 中间函数def get_oddnum(k, fun): return 1+fun(k)# 起始函数def main(): x = 3 # 通过自定义回调函数 result = get_oddnum(x, double) # 通过匿名函数执行回调 result2 = get_oddnum(x, lambda a:a*8)

在C++中呢也是类似,中间函数有一个参数是函数指针

回调的分类:

阻塞式回调(同步回调):上面的例子就是阻塞式回调,也就是说回调函数的调用发生在起始函数返回之前,也就是说result被赋值之前就被调用

延迟式回调(异步回调):延迟式回调需要多线程或者多进程才能实现,比如上面代码中get_oddnum函数换成是一个要实现将数据写入数据库的函数,返回值为写入结果,那么我们就需要进行取舍,让程序继续执行其他线程,当回调函数执行完成后在发出信号表示自己执行完了然后返回

import threadingdef wr(text): with open(r'c:adshwq.txt','w+') as f: f.write(text)def get_wr_status(text): return wr(text)def main(): txt1 = "一个大文件" txt2 = "另一个大文件" t1 = threading.Thread(target=get_wr_status, args=(txt1, )) t2 = threading.Thread(target=get_wr_status, args=(txt2, )) t1.start() t2.start() t1.join() t2.join()


 

JavaScript事件循环的概念是什么

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。