同步API和异步API随想

 

    当完成一个系统需要提供给第三方使用的时候,如何让第三方更好的使用呢?我们通常会提供一个库以及一个头文件(接口说明);如果第三方不仅需要同步调用接口同时又需要异步调用的接口,那么其实一个API库的实现还是比较复杂的。

 

    同步调用:  调用后等待它返回;

    异步调用:  调用后立即返回,待稍后去查询是否完成;

 

    同步API库比较容易实现,谈谈异步API库的实现:

   

    

 

提供给调用者的接口:

 

1) 调用者调用接口 --- Add_Task,并得到Task的标识ID;

2) 在一定的时候去探询任务是否完成  --- Task_Poll;

 

API库的实现:

1) 调用者进行API初始化,启动后端处理线程,线程处于条件等待状态;

2) 调用者调用放入任务的接口,任务放入队列中,并返回Task的Id,并唤醒线程;

3) 后端线程去取队列中的任务,进行“处理” ----  本地处理 ; 远端的网络处理(多路复用)

4) 处理完后,将结果再放回到队列中

5) 调用者通过探询来取回已经完成的Task

 

 

 

备注:

 

线程换成进程;队列采用是双通道IPC的方式;

UDP包: 每个包需要一个Seq标识,用来回包时找到Task;

TCP包:  如果每个Socket不共用的话,则不需要Seq标志,通过socket --> _flow_no --> Task;

             如果每个Socket共用的话,则需要Seq标识

 

同步API异步API是编程中常见的概念。 同步API是指调用一个函数后,必须等待函数执行完毕并返回结果后才能继续执行后续的代码。同步API可以通过return语句返回结果,可以直接获取到函数执行的返回值。 异步API是指调用一个函数后,不需要等待函数执行完毕,而是继续执行后续的代码。异步API不会通过return语句返回结果,而是通过回调函数传递执行结果。异步API会将任务放到异步队列中,等待主线程空闲时再执行。 区别一:同步API可以通过return语句返回结果,而异步API不能通过return语句返回结果。 区别二:同步API会阻塞后续代码的执行,而异步API不会阻塞后续代码的执行。 回调函数是一种处理异步任务结果的方式。当异步任务执行完毕后,会调用回调函数,并将执行结果作为参数传递给回调函数。回调函数可以通过参数获取异步任务的执行结果。 总结起来,同步API是会阻塞后续代码执行的,可以直接获取函数的返回值;而异步API是不会阻塞后续代码执行的,需要通过回调函数来获取执行结果。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Node.js学习记录七:Node的异步API同步API](https://blog.csdn.net/m0_48459838/article/details/113844964)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [普歌-Node.js异步编程(区别与分析)](https://blog.csdn.net/BZJ0528_/article/details/109921929)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值