exec.library/Procure

[Contents] [Index] [Help] [Retrace] [Browse <] [Browse >]
NAME
 Procure -- bid for a message lock (semaphore)
SYNOPSIS
 result = Procure(semaphore, bidMessage)
 D0 A0 A1
 BYTE Procure(struct Semaphore *, struct Message *);
FUNCTION
 This function is used to obtain a message based semaphore lock. If
 the lock is immediate, Procure() returns a true result, and the
 bidMessage is not used. If the semaphore is already locked,
 Procure() returns false, and the task must wait for the bidMessage
 to arrive at its reply port.
 Straight "Semaphores" use the message system. They are therefore
 queueable, and users may wait on several of them at the same time.
 This makes them more powerful than "Signal Semaphores"
INPUT
 semaphore - a semaphore message port. This port is used to queue
 all pending lockers. This port should be initialized with the
 PA_IGNORE option, as the MP_SigTask field is used for a pointer to
 the current locker message (not a task). New semaphore ports must
 also have the SM_BIDS word initialized to -1. If the semaphore is
 public, it should be named, its priority set, and the added with
 AddPort. Message port priority is often used for anti-deadlock
 locking conventions.
RESULT
 result - true when the semaphore is free. In such cases no waiting
 needs to be done. If false, then the task should wait at its
 bidMessage reply port.
BUGS
 Procure() and Vacate() do not have proven reliability.
SEE ALSO
 Vacate()

[Back to Amiga Developer Docs]

AltStyle によって変換されたページ (->オリジナル) /