使用者的工作请求发布规则
NDK 使用者将在发起程序队列上发布以下类型的工作请求:
- NdkBind (NDK_FN_BIND)
- NdkFastRegister (NDK_FN_FAST_REGISTER)
- NdkInvalidate (NDK_FN_INVALIDATE)
- NdkRead (NDK_FN_READ)
- NdkSend (NDK_FN_SEND)
- NdkSendAndInvalidate (NDK_FN_SEND_AND_INVALIDATE)
- NdkWrite (NDK_FN_WRITE)
使用者将在接收队列上发布 NdkReceive (NDK_FN_RECEIVE) 请求。
使用者将以序列化的方式将所有这些请求发布到 NDK_QP 或 NDK_SRQ 上的同一单个队列。 换句话说,使用者永远不会对属于 NDK_QP 或 NDK_SRQ的同一单个队列上的任何工作请求函数进行两次并发调用。
例如,这意味着不会发出并发 NdkReceive 调用、并发 NdkSend 和 NdkWrite 调用,但并发 NdkReceive 和 NdkWrite 调用可能在同一 NDK_QP发出。
提供商工作请求发布规则
提供程序不应在上述工作请求函数中具有任何冗余锁,因为它们可以保证由使用者序列化。
提供程序必须能够处理 NdkFlush(NDK_FN_FLUSH)调用,此调用可能与对同一NDK_QP的工作请求调用同时发生。
提供程序必须能够处理 NdkCloseConnector 调用(针对NDK_QP的后续NDK_CONNECTOR对象),该调用可以同时调用同一NDK_QP的工作请求调用。