HP-UX SNAplus2 R7 APPC Programmer's Guide
Concepts
Non-Blocking Operation
a multi-threaded TP that issues APPC verbs from more than one thread. To issue a verb in non-blocking mode, the
TP sets an option in the
opext parameter of the verb, as described in Chapter 4, APPC Conversation Verbs.
For each TP and conversation, APPC provides a number of queues on which verbs can be held while waiting to be
processed. Each queue handles a different subset of the valid APPC verbs, so that each verb is associated with a
different queue.
• If the TP issues a verb and there are no verbs already being processed for the appropriate queue, the verb is
processed immediately.
• If the TP issues a non-blocking verb and another verb is already being processed for the appropriate queue,
the verb is added to the queue (behind any other verbs already waiting on the appropriate queue). It will be
processed after the verbs already queued have completed (except for the Allocate queue, as described below).
• If the TP issues a blocking verb and another verb is already being processed for the appropriate queue, the verb
is rejected with an error return code.
The queues available to the TP, and the verbs that each queue handles, are as follows.
Allocate queue
For each active TP, there is a single queue that handles the following verbs:
• [MC_]ALLOCATE
• [MC_]SEND_CONVERSATION
Two or more verbs on this queue can be processed at the same time, so they are not guaranteed to complete
in the same order in which they were issued.
Send-Receive queue (half-duplex conversations only)
For each active half-duplex conversation, there is a single queue that handles the following verbs:
• [MC_]CONFIRM
• [MC_]CONFIRMED
• [MC_]DEALLOCATE
• [MC_]FLUSH
• [MC_]PREPARE_TO_RECEIVE
• [MC_]RECEIVE_AND_WAIT
• [MC_]RECEIVE_IMMEDIATE
• [MC_]SEND_DATA
• [MC_]SEND_ERROR
The [MC_]RECEIVE_AND_POST verb is not held on this queue. This verb cannot be issued, in either
blocking or non-blocking mode, if any of the Receive verbs is already being processed for the conversation.
Send queue (full-duplex conversations only)
For each active full-duplex conversation, there is a single queue that handles the following verbs:
• [MC_]DEALLOCATE
• [MC_]FLUSH
• [MC_]SEND_DATA
• [MC_]SEND_ERROR
Receive queue (full-duplex conversations only)
For each active full-duplex conversation, there is a single queue that handles the following verbs:
• [MC_]RECEIVE_AND_WAIT
40