x
Yes
No
Do you want to visit DriveHQ English website?
Inicio
Características
Precios
Prueba gratuita
Software cliente
Acerca de nosotros
Servidor de archivos
|
Solución de copias de seguridad
|
Servidor FTP
|
Servidor de correo electrónico
|
Alojamiento web
|
Software cliente
Servidor de archivos
Solución de copia de seguridad
Servidor FTP
Servidor de correo electrónico
Alojamiento web
Software cliente
interprocess_condition.hpp - Hosted on DriveHQ Cloud IT Platform
Arriba
Subir
Descargar
Compartir
Publicar
Nueva carpeta
Nuevo archivo
Copiar
Cortar
Eliminar
Pegar
Clasificación
Actualizar
Ruta de la carpeta: \\game3dprogramming\materials\GameFactory\GameFactoryDemo\references\boost_1_35_0\boost\interprocess\sync\interprocess_condition.hpp
Girar
Efecto
Propiedad
Historial
////////////////////////////////////////////////////////////////////////////// // // (C) Copyright Ion Gaztanaga 2005-2008. Distributed under the Boost // Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // // See http://www.boost.org/libs/interprocess for documentation. // ////////////////////////////////////////////////////////////////////////////// #ifndef BOOST_INTERPROCESS_CONDITION_HPP #define BOOST_INTERPROCESS_CONDITION_HPP #if (defined _MSC_VER) && (_MSC_VER >= 1200) # pragma once #endif #include
#include
#include
#include
#include
#include
#include
#include
#include
#if defined BOOST_INTERPROCESS_POSIX_PROCESS_SHARED #include
#include
#include
#define BOOST_INTERPROCESS_USE_POSIX #else #include
#include
#include
#define BOOST_INTERPROCESS_USE_GENERIC_EMULATION #endif //!\file //!Describes process-shared variables interprocess_condition class namespace boost { namespace posix_time { class ptime; } namespace interprocess { class named_condition; class interprocess_condition { /// @cond //Non-copyable interprocess_condition(const interprocess_condition &); interprocess_condition &operator=(const interprocess_condition &); friend class named_condition; /// @endcond public: //!Constructs a interprocess_condition. On error throws interprocess_exception. interprocess_condition(); //!Destroys *this //!liberating system resources. ~interprocess_condition(); //!If there is a thread waiting on *this, change that //!thread's state to ready. Otherwise there is no effect. void notify_one(); //!Change the state of all threads waiting on *this to ready. //!If there are no waiting threads, notify_all() has no effect. void notify_all(); //!Releases the lock on the interprocess_mutex object associated with lock, blocks //!the current thread of execution until readied by a call to //!this->notify_one() or this->notify_all(), and then reacquires the lock. template
void wait(L& lock) { if (!lock) throw lock_exception(); do_wait(*lock.mutex()); } //!The same as: //!while (!pred()) wait(lock) template
void wait(L& lock, Pr pred) { if (!lock) throw lock_exception(); while (!pred()) do_wait(*lock.mutex()); } //!Releases the lock on the interprocess_mutex object associated with lock, blocks //!the current thread of execution until readied by a call to //!this->notify_one() or this->notify_all(), or until time abs_time is reached, //!and then reacquires the lock. //!Returns: false if time abs_time is reached, otherwise true. template
bool timed_wait(L& lock, const boost::posix_time::ptime &abs_time) { if (!lock) throw lock_exception(); return do_timed_wait(abs_time, *lock.mutex()); } //!The same as: while (!pred()) { //! if (!timed_wait(lock, abs_time)) return pred(); //! } return true; template
bool timed_wait(L& lock, const boost::posix_time::ptime &abs_time, Pr pred) { if (!lock) throw lock_exception(); while (!pred()){ if (!do_timed_wait(abs_time, *lock.mutex())) return pred(); } return true; } /// @cond private: void do_wait(interprocess_mutex &mut); bool do_timed_wait(const boost::posix_time::ptime &abs_time, interprocess_mutex &mut); #if defined (BOOST_INTERPROCESS_USE_GENERIC_EMULATION) enum { SLEEP = 0, NOTIFY_ONE, NOTIFY_ALL }; interprocess_mutex m_enter_mut; interprocess_mutex m_check_mut; volatile boost::uint32_t m_command; volatile boost::uint32_t m_num_waiters; bool do_timed_wait(bool tout_enabled, const boost::posix_time::ptime &abs_time, interprocess_mutex &mut); void notify(boost::uint32_t command); #elif defined(BOOST_INTERPROCESS_USE_POSIX) pthread_cond_t m_condition; #endif /// @endcond }; } //namespace interprocess } // namespace boost #ifdef BOOST_INTERPROCESS_USE_GENERIC_EMULATION # undef BOOST_INTERPROCESS_USE_GENERIC_EMULATION # include
#endif #ifdef BOOST_INTERPROCESS_USE_POSIX # undef BOOST_INTERPROCESS_USE_POSIX # include
#endif #include
#endif // BOOST_INTERPROCESS_CONDITION_HPP
interprocess_condition.hpp
Dirección de la página
Dirección del archivo
Anterior
3/18
Siguiente
Descargar
( 5 KB )
Comments
Total ratings:
0
Average rating:
No clasificado
of 10
Would you like to comment?
Join now
, or
Logon
if you are already a member.