Требования к публикации запросов на работу 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.