From: Hans Mulder Date: Mon, 8 Jun 1998 16:13:14 +0000 (-0700) Subject: Documentation patch for Semaphore.pm X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=5d582a372c85360bc6ffdf3733896719312079e2;p=p5sagit%2Fp5-mst-13.2.git Documentation patch for Semaphore.pm Message-Id: <3.0.5.32.19980608161314.00a0a880@ous.edu> p4raw-id: //depot/perl@1086 --- diff --git a/ext/Thread/Thread/Semaphore.pm b/ext/Thread/Thread/Semaphore.pm index 4e1bb7d..915808c 100644 --- a/ext/Thread/Thread/Semaphore.pm +++ b/ext/Thread/Thread/Semaphore.pm @@ -18,6 +18,49 @@ Thread::Semaphore - thread-safe semaphores $s->up($up_value); $s->down($up_value); +=head1 DESCRIPTION + +Semaphores provide a mechanism to regulate access to resources. Semaphores, +unlike locks, aren't tied to particular scalars, and so may be used to +control access to anything you care to use them for. + +Semaphores don't limit their values to zero or one, so they can be used to +control access to some resource that may have more than one of. (For +example, filehandles) Increment and decrement amounts aren't fixed at one +either, so threads can reserve or return multiple resources at once. + +=head1 FUNCTIONS AND METHODS + +=over 8 + +=item new + +=item new NUMBER + +C creates a new semaphore, and initializes its count to the passed +number. If no number is passed, the semaphore's count is set to one. + +=item down + +=item down NUMBER + +The C method decreases the semaphore's count by the specified number, +or one if no number has been specified. If the semaphore's count would drop +below zero, this method will block until such time that the semaphore's +count is equal to or larger than the amount you're Cing the +semaphore's count by. + +=item up + +=item up NUMBER + +The C method increases the semaphore's count by the number specified, +or one if no number's been specified. This will unblock any thread blocked +trying to C the semaphore if the C raises the semaphore count +above what the Cs are trying to decrement it by. + +=back + =cut sub new {