]> git.sesse.net Git - casparcg/blob - dependencies64/sfml/include/SFML/System/Win32/Mutex.hpp
git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/branches...
[casparcg] / dependencies64 / sfml / include / SFML / System / Win32 / Mutex.hpp
1 ////////////////////////////////////////////////////////////\r
2 //\r
3 // SFML - Simple and Fast Multimedia Library\r
4 // Copyright (C) 2007-2009 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_MUTEXWIN32_HPP\r
26 #define SFML_MUTEXWIN32_HPP\r
27 \r
28 ////////////////////////////////////////////////////////////\r
29 // Headers\r
30 ////////////////////////////////////////////////////////////\r
31 #include <SFML/System/NonCopyable.hpp>\r
32 #include <windows.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 /// The Win32 version uses critical sections, as it is\r
42 /// faster than mutexes.<br/>\r
43 /// See Lock for an efficient way of using it.\r
44 ////////////////////////////////////////////////////////////\r
45 class SFML_API Mutex : NonCopyable\r
46 {\r
47 public :\r
48 \r
49     ////////////////////////////////////////////////////////////\r
50     /// Default constructor\r
51     ///\r
52     ////////////////////////////////////////////////////////////\r
53     Mutex();\r
54 \r
55     ////////////////////////////////////////////////////////////\r
56     /// Destructor\r
57     ///\r
58     ////////////////////////////////////////////////////////////\r
59     ~Mutex();\r
60 \r
61     ////////////////////////////////////////////////////////////\r
62     /// Lock the mutex\r
63     ///\r
64     ////////////////////////////////////////////////////////////\r
65     void Lock();\r
66 \r
67     ////////////////////////////////////////////////////////////\r
68     /// Unlock the mutex\r
69     ///\r
70     ////////////////////////////////////////////////////////////\r
71     void Unlock();\r
72 \r
73 private :\r
74 \r
75     ////////////////////////////////////////////////////////////\r
76     // Member data\r
77     ////////////////////////////////////////////////////////////\r
78     CRITICAL_SECTION myHandle; ///< Win32 handle of the mutex\r
79 };\r
80 \r
81 } // namespace sf\r
82 \r
83 \r
84 #endif // SFML_MUTEXWIN32_HPP\r