Specifying an obtain option
When a requestor calls the Latch_Obtain service to request ownership
of a latch, the latch manager cannot grant control of the latch immediately
if contention exists because either:
- Exclusive ownership of the latch was requested (Latch_Obtain was called with an access option of ISGLOBT_EXCLUSIVE, value of 0), and an exclusive or shared request (either owned or pending) already exists for the latch
- Shared ownership of the latch was requested, (Latch_Obtain was called with an access option of ISGLOBT_SHARED, value of 1), and an exclusive request (either owned or pending) already exists for the latch.
When either situation occurs, the value specified on the obtain_option
parameter indicates how the latch manager is to handle the request,
which is one of the following:
- ISGLOBT_SYNC (value of 0): Queue the request and suspend the requestor; when the latch manager eventually grants ownership of the latch to the requestor, return control to the requestor
- ISGLOBT_COND (value of 1): Do not queue the request; return control to the requestor
- ISGLOBT_ASYNC_ECB (value of 2): Queue the request and return control to the requestor; post an ECB when the latch manager eventually grants ownership of the latch to the requestor.