Ajout version Release/x64 avec les libraries x64 et tuning de la version Debug
This commit is contained in:
		
							
								
								
									
										148
									
								
								SQCSim2021/external/sfml251/include/SFML/System/Mutex.hpp
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										148
									
								
								SQCSim2021/external/sfml251/include/SFML/System/Mutex.hpp
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,148 @@ | ||||
| //////////////////////////////////////////////////////////// | ||||
| // | ||||
| // SFML - Simple and Fast Multimedia Library | ||||
| // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org) | ||||
| // | ||||
| // This software is provided 'as-is', without any express or implied warranty. | ||||
| // In no event will the authors be held liable for any damages arising from the use of this software. | ||||
| // | ||||
| // Permission is granted to anyone to use this software for any purpose, | ||||
| // including commercial applications, and to alter it and redistribute it freely, | ||||
| // subject to the following restrictions: | ||||
| // | ||||
| // 1. The origin of this software must not be misrepresented; | ||||
| //    you must not claim that you wrote the original software. | ||||
| //    If you use this software in a product, an acknowledgment | ||||
| //    in the product documentation would be appreciated but is not required. | ||||
| // | ||||
| // 2. Altered source versions must be plainly marked as such, | ||||
| //    and must not be misrepresented as being the original software. | ||||
| // | ||||
| // 3. This notice may not be removed or altered from any source distribution. | ||||
| // | ||||
| //////////////////////////////////////////////////////////// | ||||
|  | ||||
| #ifndef SFML_MUTEX_HPP | ||||
| #define SFML_MUTEX_HPP | ||||
|  | ||||
| //////////////////////////////////////////////////////////// | ||||
| // Headers | ||||
| //////////////////////////////////////////////////////////// | ||||
| #include <SFML/System/Export.hpp> | ||||
| #include <SFML/System/NonCopyable.hpp> | ||||
|  | ||||
|  | ||||
| namespace sf | ||||
| { | ||||
| namespace priv | ||||
| { | ||||
|     class MutexImpl; | ||||
| } | ||||
|  | ||||
| //////////////////////////////////////////////////////////// | ||||
| /// \brief Blocks concurrent access to shared resources | ||||
| ///        from multiple threads | ||||
| /// | ||||
| //////////////////////////////////////////////////////////// | ||||
| class SFML_SYSTEM_API Mutex : NonCopyable | ||||
| { | ||||
| public: | ||||
|  | ||||
|     //////////////////////////////////////////////////////////// | ||||
|     /// \brief Default constructor | ||||
|     /// | ||||
|     //////////////////////////////////////////////////////////// | ||||
|     Mutex(); | ||||
|  | ||||
|     //////////////////////////////////////////////////////////// | ||||
|     /// \brief Destructor | ||||
|     /// | ||||
|     //////////////////////////////////////////////////////////// | ||||
|     ~Mutex(); | ||||
|  | ||||
|     //////////////////////////////////////////////////////////// | ||||
|     /// \brief Lock the mutex | ||||
|     /// | ||||
|     /// If the mutex is already locked in another thread, | ||||
|     /// this call will block the execution until the mutex | ||||
|     /// is released. | ||||
|     /// | ||||
|     /// \see unlock | ||||
|     /// | ||||
|     //////////////////////////////////////////////////////////// | ||||
|     void lock(); | ||||
|  | ||||
|     //////////////////////////////////////////////////////////// | ||||
|     /// \brief Unlock the mutex | ||||
|     /// | ||||
|     /// \see lock | ||||
|     /// | ||||
|     //////////////////////////////////////////////////////////// | ||||
|     void unlock(); | ||||
|  | ||||
| private: | ||||
|  | ||||
|     //////////////////////////////////////////////////////////// | ||||
|     // Member data | ||||
|     //////////////////////////////////////////////////////////// | ||||
|     priv::MutexImpl* m_mutexImpl; ///< OS-specific implementation | ||||
| }; | ||||
|  | ||||
| } // namespace sf | ||||
|  | ||||
|  | ||||
| #endif // SFML_MUTEX_HPP | ||||
|  | ||||
|  | ||||
| //////////////////////////////////////////////////////////// | ||||
| /// \class sf::Mutex | ||||
| /// \ingroup system | ||||
| /// | ||||
| /// Mutex stands for "MUTual EXclusion". A mutex is a | ||||
| /// synchronization object, used when multiple threads are involved. | ||||
| /// | ||||
| /// When you want to protect a part of the code from being accessed | ||||
| /// simultaneously by multiple threads, you typically use a | ||||
| /// mutex. When a thread is locked by a mutex, any other thread | ||||
| /// trying to lock it will be blocked until the mutex is released | ||||
| /// by the thread that locked it. This way, you can allow only | ||||
| /// one thread at a time to access a critical region of your code. | ||||
| /// | ||||
| /// Usage example: | ||||
| /// \code | ||||
| /// Database database; // this is a critical resource that needs some protection | ||||
| /// sf::Mutex mutex; | ||||
| /// | ||||
| /// void thread1() | ||||
| /// { | ||||
| ///     mutex.lock(); // this call will block the thread if the mutex is already locked by thread2 | ||||
| ///     database.write(...); | ||||
| ///     mutex.unlock(); // if thread2 was waiting, it will now be unblocked | ||||
| /// } | ||||
| /// | ||||
| /// void thread2() | ||||
| /// { | ||||
| ///     mutex.lock(); // this call will block the thread if the mutex is already locked by thread1 | ||||
| ///     database.write(...); | ||||
| ///     mutex.unlock(); // if thread1 was waiting, it will now be unblocked | ||||
| /// } | ||||
| /// \endcode | ||||
| /// | ||||
| /// Be very careful with mutexes. A bad usage can lead to bad problems, | ||||
| /// like deadlocks (two threads are waiting for each other and the | ||||
| /// application is globally stuck). | ||||
| /// | ||||
| /// To make the usage of mutexes more robust, particularly in | ||||
| /// environments where exceptions can be thrown, you should | ||||
| /// use the helper class sf::Lock to lock/unlock mutexes. | ||||
| /// | ||||
| /// SFML mutexes are recursive, which means that you can lock | ||||
| /// a mutex multiple times in the same thread without creating | ||||
| /// a deadlock. In this case, the first call to lock() behaves | ||||
| /// as usual, and the following ones have no effect. | ||||
| /// However, you must call unlock() exactly as many times as you | ||||
| /// called lock(). If you don't, the mutex won't be released. | ||||
| /// | ||||
| /// \see sf::Lock | ||||
| /// | ||||
| //////////////////////////////////////////////////////////// | ||||
		Reference in New Issue
	
	Block a user