Требования к публикации запроса на работу 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.
Поставщик должен иметь возможность обрабатывать вызов NdkCloseConnector (на объекте преемника NDK_CONNECTOR для NDK_QP), который может вызываться одновременно с вызовом рабочего запроса на тот же NDK_QP.