同步API和异步API随想

来源:互联网 发布:黑马就业班java单词表 编辑:程序博客网 时间:2024/04/29 18:12

 

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

 

原创粉丝点击