NDKPI 工作请求发布要求
使用者的工作请求过帐规则
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上的工作请求调用同时调用。
提供程序必须能够处理后续NDK_CONNECTOR对象的NdkCloseConnector 调用 (NDK_QP) ,该调用可能与同一NDK_QP上的工作请求调用同时调用。