You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@activemq.apache.org by sgliu <sh...@sina.com> on 2006/11/09 04:38:12 UTC

VC & pthread.h

#ifndef ACTIVEMQ_CONCURRENT_MUTEX_H 
#define ACTIVEMQ_CONCURRENT_MUTEX_H 

// Includes. 
#include <activemq/concurrent/Synchronizable.h> 
#include <pthread.h> 

namespace activemq{ 
namespace concurrent{ 
    
  /** 
   * Creates a pthread_mutex_t object. The object is created 
   * such that successive locks from the same thread is allowed 
   * and will be successful. 
   * @author  Nathan Mittler 
   * @see  pthread_mutex_t 
   */ 
  class Mutex : public Synchronizable 
  { 
  public: 

    /** 
     * Constructor - creates and initializes the mutex. 
     */ 
    Mutex() 
    { 
            // Create an attributes object and initialize it. 
            // Assign the recursive attribute so that the same thread may 
            // lock this mutex repeatedly. 
            pthread_mutexattr_t attributes; 
            pthread_mutexattr_init( &attributes ); 

       #if defined(__USE_UNIX98) || defined(__APPLE__) 
                pthread_mutexattr_settype( &attributes,
PTHREAD_MUTEX_RECURSIVE ); 
       #endif 

            // Initialize the mutex. 
            pthread_mutex_init( &mutex, &attributes ); 
        
            // Destroy the attributes. 
            pthread_mutexattr_destroy( &attributes ); 
  } 

    /** 
     * Destructor - destroys the mutex object. 
     */ 
    virtual ~Mutex() 
    { 
            // Unlock the mutex. 
            unlock(); 
        
            // Destroy the mutex. 
            pthread_mutex_destroy( &mutex ); 
  } 

    /** 
     * Locks the object. 
     * @return  true if the lock was successful, otherwise false. 
     */ 
    virtual bool lock() 
    { 
    return pthread_mutex_lock( &mutex ) == 0; 
  } 

    /** 
     * Unlocks the object. 
     * @return  true if the unlock was successful, otherwise false. 
     */ 
    virtual bool unlock() 
    { 
    return pthread_mutex_unlock( &mutex ) == 0; 
  } 

  private:       // Data 

    /** 
     * The mutex object. 
     */ 
    pthread_mutex_t mutex; 

  }; 

}} 

#endif // ACTIVEMQ_CONCURRENT_MUTEX_H 

I compile these codes by Visual Studio 2005 C++ (Windows XP Sp2) 
fatal error C1083: can not open this file :“pthread.h”: No such file or
directory 
please help me 
-- 
View this message in context: http://www.nabble.com/VC---pthread.h-tf2599508.html#a7251912
Sent from the ActiveMQ - User mailing list archive at Nabble.com.


RE: VC & pthread.h

Posted by Timothy Bish <ta...@twcny.rr.com>.
Where did this file come from?  Its not from activemq-cpp trunk as that one
has ifdef around pthread.h
> 
> 
> #ifndef ACTIVEMQ_CONCURRENT_MUTEX_H
> #define ACTIVEMQ_CONCURRENT_MUTEX_H
> 
> // Includes.
> #include <activemq/concurrent/Synchronizable.h>
> #include <pthread.h>
> 
> namespace activemq{
> namespace concurrent{
> 
>   /**
>    * Creates a pthread_mutex_t object. The object is created
>    * such that successive locks from the same thread is allowed
>    * and will be successful.
>    * @author  Nathan Mittler
>    * @see  pthread_mutex_t
>    */
>   class Mutex : public Synchronizable
>   {
>   public:
> 
>     /**
>      * Constructor - creates and initializes the mutex.
>      */
>     Mutex()
>     {
>             // Create an attributes object and initialize it.
>             // Assign the recursive attribute so that the same thread may
>             // lock this mutex repeatedly.
>             pthread_mutexattr_t attributes;
>             pthread_mutexattr_init( &attributes );
> 
>        #if defined(__USE_UNIX98) || defined(__APPLE__)
>                 pthread_mutexattr_settype( &attributes,
> PTHREAD_MUTEX_RECURSIVE );
>        #endif
> 
>             // Initialize the mutex.
>             pthread_mutex_init( &mutex, &attributes );
> 
>             // Destroy the attributes.
>             pthread_mutexattr_destroy( &attributes );
>   }
> 
>     /**
>      * Destructor - destroys the mutex object.
>      */
>     virtual ~Mutex()
>     {
>             // Unlock the mutex.
>             unlock();
> 
>             // Destroy the mutex.
>             pthread_mutex_destroy( &mutex );
>   }
> 
>     /**
>      * Locks the object.
>      * @return  true if the lock was successful, otherwise false.
>      */
>     virtual bool lock()
>     {
>     return pthread_mutex_lock( &mutex ) == 0;
>   }
> 
>     /**
>      * Unlocks the object.
>      * @return  true if the unlock was successful, otherwise false.
>      */
>     virtual bool unlock()
>     {
>     return pthread_mutex_unlock( &mutex ) == 0;
>   }
> 
>   private:       // Data
> 
>     /**
>      * The mutex object.
>      */
>     pthread_mutex_t mutex;
> 
>   };
> 
> }}
> 
> #endif // ACTIVEMQ_CONCURRENT_MUTEX_H
> 
> I compile these codes by Visual Studio 2005 C++ (Windows XP Sp2)
> fatal error C1083: can not open this file :"pthread.h": No such file or
> directory
> please help me
> --
> View this message in context: http://www.nabble.com/VC---pthread.h-
> tf2599508.html#a7251912
> Sent from the ActiveMQ - User mailing list archive at Nabble.com.