/[svn]/linuxsampler/trunk/src/common/Mutex.h
ViewVC logotype

Diff of /linuxsampler/trunk/src/common/Mutex.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 502 by letz, Fri Apr 29 14:20:22 2005 UTC revision 550 by schoenebeck, Tue May 17 17:59:45 2005 UTC
# Line 3  Line 3 
3   *   LinuxSampler - modular, streaming capable sampler                     *   *   LinuxSampler - modular, streaming capable sampler                     *
4   *                                                                         *   *                                                                         *
5   *   Copyright (C) 2003, 2004 by Benno Senoner and Christian Schoenebeck   *   *   Copyright (C) 2003, 2004 by Benno Senoner and Christian Schoenebeck   *
6     *   Copyright (C) 2005 Christian Schoenebeck                              *
7   *                                                                         *   *                                                                         *
8   *   This program is free software; you can redistribute it and/or modify  *   *   This program is free software; you can redistribute it and/or modify  *
9   *   it under the terms of the GNU General Public License as published by  *   *   it under the terms of the GNU General Public License as published by  *
# Line 25  Line 26 
26    
27  #include <pthread.h>  #include <pthread.h>
28    
29    /** @brief Mutual exclusive objects
30     *
31     * This class provides the classical thread / process synchronisation
32     * technique called Mutex. It is used to protect critical sections, that is
33     * resources (typically data structures) from being used at the same time by
34     * different threads or processes which otherwise might turn into undefined
35     * and of course undesired behavior.
36     *
37     * Note: as this technique might block the calling thread and also implies
38     * a system call, this should not be used directly in realtime sensitive
39     * threads!
40     */
41  class Mutex {  class Mutex {
42      public:      public:
43            /**
44             * Constructor
45             */    
46          Mutex();          Mutex();
47              virtual ~Mutex();  
48            /**
49             * Destructor
50             */
51            virtual ~Mutex();
52    
53            /** @brief Lock this Mutex.
54             *
55             * If this Mutex object is currently be locked by another thread,
56             * then the calling thread will be blocked until the other thread
57             * unlocks this Mutex object. The calling thread though can safely
58             * call this method several times without danger to be blocked
59             * himself.
60             *
61             * The calling thread should call Unlock() as soon as the critical
62             * section was left.
63             */      
64          void Lock();          void Lock();
65    
66            /** @brief Try to lock this Mutex.
67             *
68             * Same as Lock() except that this method won't block the calling
69             * thread in case this Mutex object is currently locked by another
70             * thread. So this call will always immediately return and the
71             * return value has to be checked if the locking request was
72             * successful or not.
73             *
74             * @returns  true if the Mutex object could be locked, false if the
75             *           Mutex is currently locked by another thread
76             */
77          bool Trylock();          bool Trylock();
78    
79            /** @brief Unlock this Mutex.
80             *
81             * If other threads are currently blocked and waiting due to a
82             * Lock() call, one of them will be awaken.
83             */
84          void Unlock();          void Unlock();
85            
86      protected:      protected:
87          pthread_mutex_t     __posix_mutex;          pthread_mutex_t     __posix_mutex;
88          pthread_mutexattr_t __posix_mutexattr;          pthread_mutexattr_t __posix_mutexattr;

Legend:
Removed from v.502  
changed lines
  Added in v.550

  ViewVC Help
Powered by ViewVC