git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@14965 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
		
			
				
	
	
		
			85 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			TeX
		
	
	
	
	
	
			
		
		
	
	
			85 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			TeX
		
	
	
	
	
	
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 | 
						|
%% Name:        semaphore.tex
 | 
						|
%% Purpose:     wxSemaphore documentation
 | 
						|
%% Author:      Vadim Zeitlin
 | 
						|
%% Modified by:
 | 
						|
%% Created:     02.04.02
 | 
						|
%% RCS-ID:      $Id$
 | 
						|
%% Copyright:   (c) 2002 Vadim Zeitlin
 | 
						|
%% License:     wxWindows license
 | 
						|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 | 
						|
 | 
						|
\section{\class{wxSemaphore}}\label{wxsemaphore}
 | 
						|
 | 
						|
wxSemaphore is a counter limiting the number of threads concurrently accessing
 | 
						|
a shared resource. This counter is always between $0$ and the maximum value
 | 
						|
specified during the semaphore creation. When the counter is strictly greater
 | 
						|
than $0$, a call to \helpref{Wait}{wxsemaphorewait} returns immediately and
 | 
						|
decrements the counter. As soon as it reaches $0$, any subsequent calls to
 | 
						|
\helpref{Wait}{wxsemaphorewait} block and only return when the semaphore
 | 
						|
counter becomes strictly positive again as the result of calling 
 | 
						|
\helpref{Post}{wxsemaphorepost} which increments the counter.
 | 
						|
 | 
						|
In general, the semaphores are useful to restict access to a shared resource
 | 
						|
which can only be accessed by some fixed number of clients at once. For
 | 
						|
example, when modeling a hotel reservation system a semaphore with the counter
 | 
						|
equal to the total number of available rooms could be created. Each time a room
 | 
						|
is reserved, the semaphore should be acquired by calling 
 | 
						|
\helpref{Wait}{wxsemaphorewait} and each time a room is freed it should be
 | 
						|
released by calling \helpref{Post}{wxsemaphorepost}.
 | 
						|
 | 
						|
\wxheading{Derived from}
 | 
						|
 | 
						|
No base class
 | 
						|
 | 
						|
\wxheading{Include files}
 | 
						|
 | 
						|
<wx/thread.h>
 | 
						|
 | 
						|
\latexignore{\rtfignore{\wxheading{Members}}}
 | 
						|
 | 
						|
\membersection{wxSemaphore::wxSemaphore}\label{wxsemaphorewxsemaphore}
 | 
						|
 | 
						|
\func{}{wxSemaphore}{\param{int }{initialcount = 0}, \param{int }{maxcount = 0}}
 | 
						|
 | 
						|
Specifying a {\it maxcount} of $0$ actually makes wxSemaphore behave as if
 | 
						|
there is no upper limit. If maxcount is $1$ the semaphore behaves exactly as a
 | 
						|
mutex.
 | 
						|
 | 
						|
{\it initialcount} is the initial value of the semaphore which must be between
 | 
						|
$0$ and {\it maxcount} (if it is not set to $0$).
 | 
						|
 | 
						|
\membersection{wxSemaphore::\destruct{wxSemaphore}}\label{wxsemaphoredtor}
 | 
						|
 | 
						|
\func{}{\destruct{wxSemaphore}}{\void}
 | 
						|
 | 
						|
Destructor is not virtual, don't use this class polymorphically.
 | 
						|
 | 
						|
\membersection{wxSemaphore::Post}\label{wxsemaphorepost}
 | 
						|
 | 
						|
\func{void}{Post}{\void}
 | 
						|
 | 
						|
Increments the semaphore count and signals one of the waiting threads in an
 | 
						|
atomic way.
 | 
						|
 | 
						|
\membersection{wxSemaphore::TryWait}\label{wxsemaphoretrywait}
 | 
						|
 | 
						|
\func{bool}{TryWait}{\void}
 | 
						|
 | 
						|
Same as \helpref{Wait()}{wxsemaphorewait}, but does not block, returns
 | 
						|
{\tt TRUE} if the semaphore was successfully acquired and {\tt FALSE} if the
 | 
						|
count is zero and it couldn't be done.
 | 
						|
 | 
						|
\membersection{wxSemaphore::Wait}\label{wxsemaphorewait}
 | 
						|
 | 
						|
\func{void}{Wait}{\void}
 | 
						|
 | 
						|
Wait indefinitely until the semaphore count becomes strictly positive
 | 
						|
and then decrement it and return.
 | 
						|
 | 
						|
\func{bool}{Wait}{\param{unsigned long }{timeout\_millis}}
 | 
						|
 | 
						|
Same as the version above, but with a timeout limit: returns {\tt TRUE} if the
 | 
						|
semaphore was acquired and {\tt FALSE} if the timeout has ellapsed
 | 
						|
 |