多线程支持
- 所有WD基础层接口是没有锁的,每个WD Queue的实例不能被多个线程上下文同时访问。如果多个线程调用同一个WD Queue实例的接口函数,需要通过互斥机制保证过程是串行的。
- 默认场景中描述的步骤wd_send和wd_recv是串行配对调用的,在多线程场景下有可能不是串行配对的。wd_send和wd_recv能否支持不配对串行调用,取决于硬件模型,由于鲲鹏920加速器硬件处理模型中对于每个请求的处理都带有上下文标示,因此如果申请到的队列都是从鲲鹏920加速器上分配的,wd_send和wd_recv可以不必配对串行调用,比如说可以先调用多次wd_send,再调用一次wd_recv去收取某次请求的回应,这时候wd_recv的参数resp要首先指向该次请求的上下文,硬件加速器驱动层再依据这个上下文和硬件收到的回应的上下文做对比来判断是否要收取该回应消息。
父主题: WD基础层接口