]> git.sesse.net Git - casparcg/blob - SFML-1.6/include/SFML/System/Unix/Mutex.hpp
(no commit message)
[casparcg] / SFML-1.6 / include / SFML / System / Unix / Mutex.hpp
1 ////////////////////////////////////////////////////////////\r
2 //\r
3 // SFML - Simple and Fast Multimedia Library\r
4 // Copyright (C) 2007 Laurent Gomila (laurent.gom@gmail.com)\r
5 //\r
6 // This software is provided 'as-is', without any express or implied warranty.\r
7 // In no event will the authors be held liable for any damages arising from the use of this software.\r
8 //\r
9 // Permission is granted to anyone to use this software for any purpose,\r
10 // including commercial applications, and to alter it and redistribute it freely,\r
11 // subject to the following restrictions:\r
12 //\r
13 // 1. The origin of this software must not be misrepresented;\r
14 //    you must not claim that you wrote the original software.\r
15 //    If you use this software in a product, an acknowledgment\r
16 //    in the product documentation would be appreciated but is not required.\r
17 //\r
18 // 2. Altered source versions must be plainly marked as such,\r
19 //    and must not be misrepresented as being the original software.\r
20 //\r
21 // 3. This notice may not be removed or altered from any source distribution.\r
22 //\r
23 ////////////////////////////////////////////////////////////\r
24 \r
25 #ifndef SFML_MUTEXUNIX_HPP\r
26 #define SFML_MUTEXUNIX_HPP\r
27 \r
28 ////////////////////////////////////////////////////////////\r
29 // Headers\r
30 ////////////////////////////////////////////////////////////\r
31 #include <SFML/System/NonCopyable.hpp>\r
32 #include <pthread.h>\r
33 \r
34 \r
35 namespace sf\r
36 {\r
37 ////////////////////////////////////////////////////////////\r
38 /// Mutex defines a mutex (MUTual EXclusion) object,\r
39 /// that allows a thread to lock critical instructions\r
40 /// to avoid simultaneous access with other threads.\r
41 /// See Lock for an efficient way of using it.\r
42 ////////////////////////////////////////////////////////////\r
43 class SFML_API Mutex : NonCopyable\r
44 {\r
45 public :\r
46 \r
47     ////////////////////////////////////////////////////////////\r
48     /// Default constructor\r
49     ///\r
50     ////////////////////////////////////////////////////////////\r
51     Mutex();\r
52 \r
53     ////////////////////////////////////////////////////////////\r
54     /// Destructor\r
55     ///\r
56     ////////////////////////////////////////////////////////////\r
57     ~Mutex();\r
58 \r
59     ////////////////////////////////////////////////////////////\r
60     /// Lock the mutex\r
61     ///\r
62     ////////////////////////////////////////////////////////////\r
63     void Lock();\r
64 \r
65     ////////////////////////////////////////////////////////////\r
66     /// Unlock the mutex\r
67     ///\r
68     ////////////////////////////////////////////////////////////\r
69     void Unlock();\r
70 \r
71 private :\r
72 \r
73     ////////////////////////////////////////////////////////////\r
74     // Member data\r
75     ////////////////////////////////////////////////////////////\r
76     pthread_mutex_t myMutex; ///< pthread instance of the mutex\r
77 };\r
78 \r
79 } // namespace sf\r
80 \r
81 \r
82 #endif // SFML_MUTEXUNIX_HPP\r