You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by sgliu <sh...@sina.com> on 2006/11/09 03:57:49 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-tf2599406.html#a7251617
Sent from the ActiveMQ - Dev mailing list archive at Nabble.com.