home *** CD-ROM | disk | FTP | other *** search
/ PC World 2005 June / PCWorld_2005-06_cd.bin / software / vyzkuste / firewally / firewally.exe / framework-2.3.exe / Semaphore.pm < prev    next >
Text File  |  2002-07-08  |  4KB  |  128 lines

  1. #---------------------------------------------------------------------
  2. package Win32::Semaphore;
  3. #
  4. # Copyright 1998 Christopher J. Madsen
  5. #
  6. # Created: 3 Feb 1998 from the ActiveWare version
  7. #   (c) 1995 Microsoft Corporation. All rights reserved.
  8. #       Developed by ActiveWare Internet Corp., http://www.ActiveWare.com
  9. #
  10. #   Other modifications (c) 1997 by Gurusamy Sarathy <gsar@activestate.com>
  11. #
  12. # Author: Christopher J. Madsen <chris_madsen@geocities.com>
  13. # Version: 1.00 (6-Feb-1998)
  14. #
  15. # This program is free software; you can redistribute it and/or modify
  16. # it under the same terms as Perl itself.
  17. #
  18. # This program is distributed in the hope that it will be useful,
  19. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  20. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See either the
  21. # GNU General Public License or the Artistic License for more details.
  22. #
  23. # Use Win32 semaphore objects for synchronization
  24. #---------------------------------------------------------------------
  25.  
  26. $VERSION = '1.02';
  27.  
  28. use Win32::IPC 1.00 '/./';      # Import everything
  29. require Exporter;
  30. require DynaLoader;
  31.  
  32. @ISA = qw(Exporter DynaLoader Win32::IPC);
  33. @EXPORT_OK = qw(
  34.   wait_all wait_any
  35. );
  36.  
  37. bootstrap Win32::Semaphore;
  38.  
  39. sub Create  { $_[0] = new('Win32::Semaphore',@_[1..3]) }
  40. sub Open  { $_[0] = Win32::Semaphore->open($_[1]) }
  41. sub Release { &release }
  42.  
  43. 1;
  44. __END__
  45.  
  46. =head1 NAME
  47.  
  48. Win32::Semaphore - Use Win32 semaphore objects from Perl
  49.  
  50. =head1 SYNOPSIS
  51.     require Win32::Semaphore;
  52.  
  53.     $sem = Win32::Semaphore->new($initial,$maximum,$name);
  54.     $sem->wait;
  55.  
  56. =head1 DESCRIPTION
  57.  
  58. This module allows access to Win32 semaphore objects.  The C<wait>
  59. method and C<wait_all> & C<wait_any> functions are inherited from the
  60. L<"Win32::IPC"> module.
  61.  
  62. =head2 Methods
  63.  
  64. =over 4
  65.  
  66. =item $semaphore = Win32::Semaphore->new($initial, $maximum, [$name])
  67.  
  68. Constructor for a new semaphore object.  C<$initial> is the initial
  69. count, and C<$maximum> is the maximum count for the semaphore.  If
  70. C<$name> is omitted, creates an unnamed semaphore object.
  71.  
  72. If C<$name> signifies an existing semaphore object, then C<$initial>
  73. and C<$maximum> are ignored and the object is opened.
  74.  
  75. =item $semaphore = Win32::Semaphore->open($name)
  76.  
  77. Constructor for opening an existing semaphore object.
  78.  
  79. =item $semaphore->release([$increment, [$previous]])
  80.  
  81. Increment the count of C<$semaphore> by C<$increment> (default 1).
  82. If C<$increment> plus the semaphore's current count is more than its
  83. maximum count, the count is not changed.  Returns true if the
  84. increment is successful.
  85.  
  86. The semaphore's count (before incrementing) is stored in the second
  87. argument (if any).
  88.  
  89. It is not necessary to wait on a semaphore before calling C<release>,
  90. but you'd better know what you're doing.
  91.  
  92. =item $semaphore->wait([$timeout])
  93.  
  94. Wait for C<$semaphore>'s count to be nonzero, then decrement it by 1.
  95. See L<"Win32::IPC">.
  96.  
  97. =back
  98.  
  99. =head2 Deprecated Functions and Methods
  100.  
  101. B<Win32::Semaphore> still supports the ActiveWare syntax, but its use
  102. is deprecated.
  103.  
  104. =over 4
  105.  
  106. =item Win32::Semaphore::Create($SemObject,$Initial,$Max,$Name)
  107.  
  108. Use C<$SemObject = Win32::Semaphore-E<gt>new($Initial,$Max,$Name)> instead.
  109.  
  110. =item Win32::Semaphore::Open($SemObject, $Name)
  111.  
  112. Use C<$SemObject = Win32::Semaphore-E<gt>open($Name)> instead.
  113.  
  114. =item $SemObj->Release($Count,$LastVal)
  115.  
  116. Use C<$SemObj-E<gt>release($Count,$LastVal)> instead.
  117.  
  118. =back
  119.  
  120. =head1 AUTHOR
  121.  
  122. Christopher J. Madsen E<lt>F<chris_madsen@geocities.com>E<gt>
  123.  
  124. Loosely based on the original module by ActiveWare Internet Corp.,
  125. F<http://www.ActiveWare.com>
  126.  
  127. =cut
  128.