同步API和异步API随想

本文探讨了异步API库的设计与实现,包括调用者如何发起任务请求、获取任务状态,以及API库内部如何处理这些任务。介绍了通过线程、进程、队列等手段实现异步任务调度的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

    当完成一个系统需要提供给第三方使用的时候,如何让第三方更好的使用呢?我们通常会提供一个库以及一个头文件(接口说明);如果第三方不仅需要同步调用接口同时又需要异步调用的接口,那么其实一个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标识

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值