X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/90e572f1e5af1e51fd14e2e1e6f64fa3e258e590..c266eff98c5e44012647f54f38a1e29ecabd8759:/docs/latex/wx/mutex.tex diff --git a/docs/latex/wx/mutex.tex b/docs/latex/wx/mutex.tex index 4baa9cfae8..7f45598005 100644 --- a/docs/latex/wx/mutex.tex +++ b/docs/latex/wx/mutex.tex @@ -8,10 +8,11 @@ resource as only one thread at a time can own a mutex object. Mutexes may be recursive in the sense that a thread can lock a mutex which it had already locked before (instead of dead locking the entire process in this situation by starting to wait on a mutex which will never be released while the -thread is waiting) but using them is not recommended and they are {\bf not} -recursive by default. The reason for this is that recursive mutexes are not -supported by all Unix flavours and, worse, they cannot be used with -\helpref{wxCondition}{wxcondition}. +thread is waiting) but using them is not recommended under Unix and they are +{\bf not} recursive there by default. The reason for this is that recursive +mutexes are not supported by all Unix flavours and, worse, they cannot be used +with \helpref{wxCondition}{wxcondition}. On the other hand, Win32 mutexes are +always recursive. For example, when several threads use the data stored in the linked list, modifications to the list should only be allowed to one thread at a time @@ -41,7 +42,7 @@ because during a new node addition the list integrity is temporarily broken s_mutexProtectingTheGlobalList->Unlock(); } - // return true the given number is greater than all array elements + // return true if the given number is greater than all array elements bool MyThread::IsGreater(int num) { // before using the list we must acquire the mutex @@ -86,6 +87,10 @@ None. +\wxheading{Library} + +\helpref{wxBase}{librarieslist} + \wxheading{See also} \helpref{wxThread}{wxthread}, \helpref{wxCondition}{wxcondition}, @@ -93,23 +98,27 @@ None. \latexignore{\rtfignore{\wxheading{Members}}} + \membersection{wxMutex::wxMutex}\label{wxmutexctor} \func{}{wxMutex}{\param{wxMutexType }{type = {\tt wxMUTEX\_DEFAULT}}} Default constructor. + \membersection{wxMutex::\destruct{wxMutex}}\label{wxmutexdtor} \func{}{\destruct{wxMutex}}{\void} Destroys the wxMutex object. + \membersection{wxMutex::Lock}\label{wxmutexlock} \func{wxMutexError}{Lock}{\void} -Locks the mutex object. +Locks the mutex object. This is equivalent to +\helpref{LockTimeout}{wxmutexlocktimeout} with infinite timeout. \wxheading{Return value} @@ -119,9 +128,27 @@ One of: \begin{twocollist}\itemsep=0pt \twocolitem{{\bf wxMUTEX\_NO\_ERROR}}{There was no error.} \twocolitem{{\bf wxMUTEX\_DEAD\_LOCK}}{A deadlock situation was detected.} -\twocolitem{{\bf wxMUTEX\_BUSY}}{The mutex is already locked by another thread.} \end{twocollist} + +\membersection{wxMutex::LockTimeout}\label{wxmutexlocktimeout} + +\func{wxMutexError}{LockTimeout}{\param{unsigned long}{ msec}} + +Try to lock the mutex object during the specified time interval. + +\wxheading{Return value} + +One of: + +\twocolwidtha{7cm} +\begin{twocollist}\itemsep=0pt +\twocolitem{{\bf wxMUTEX\_NO\_ERROR}}{Mutex successfully locked.} +\twocolitem{{\bf wxMUTEX\_TIMEOUT}}{Mutex couldn't be acquired before timeout expiration.} +\twocolitem{{\bf wxMUTEX\_DEAD\_LOCK}}{A deadlock situation was detected.} +\end{twocollist} + + \membersection{wxMutex::TryLock}\label{wxmutextrylock} \func{wxMutexError}{TryLock}{\void} @@ -135,10 +162,10 @@ One of: \twocolwidtha{7cm} \begin{twocollist}\itemsep=0pt \twocolitem{{\bf wxMUTEX\_NO\_ERROR}}{There was no error.} -\twocolitem{{\bf wxMUTEX\_DEAD\_LOCK}}{A deadlock situation was detected.} \twocolitem{{\bf wxMUTEX\_BUSY}}{The mutex is already locked by another thread.} \end{twocollist} + \membersection{wxMutex::Unlock}\label{wxmutexunlock} \func{wxMutexError}{Unlock}{\void} @@ -152,8 +179,6 @@ One of: \twocolwidtha{7cm} \begin{twocollist}\itemsep=0pt \twocolitem{{\bf wxMUTEX\_NO\_ERROR}}{There was no error.} -\twocolitem{{\bf wxMUTEX\_DEAD\_LOCK}}{A deadlock situation was detected.} -\twocolitem{{\bf wxMUTEX\_BUSY}}{The mutex is already locked by another thread.} -\twocolitem{{\bf wxMUTEX\_UNLOCKED}}{The calling thread tries to unlock an unlocked mutex.} +\twocolitem{{\bf wxMUTEX\_UNLOCKED}}{The calling thread doesn't own the mutex.} \end{twocollist}