Home

qtreadwritemutex.h

This is the verbatim text of the qtreadwritemutex.h include file. It is provided only for illustration; the copyright remains with Trolltech.


#ifndef QTREADWRITEMUTEX_H
#define QTREADWRITEMUTEX_H

#include <qglobal.h>

class QtReadWriteMutexPrivate;

class QtReadWriteMutex
{
public:
    enum AccessMode {
        ReadAccess = 0,
        WriteAccess
    };

    QtReadWriteMutex(int maxreaders = 16);
    ~QtReadWriteMutex();

    void lock(AccessMode access);
    void unlock(AccessMode access);

    int maxReaders() const;

private:
    QtReadWriteMutexPrivate *d;
};

class QtReadWriteMutexLocker
{
public:
    QtReadWriteMutexLocker(QtReadWriteMutex *mutex, QtReadWriteMutex::AccessMode access);
    ~QtReadWriteMutexLocker();

    QtReadWriteMutex *mutex() const;

private:
    QtReadWriteMutex::AccessMode acs;
    QtReadWriteMutex *mtx;
};

inline QtReadWriteMutexLocker::QtReadWriteMutexLocker(QtReadWriteMutex *mutex, QtReadWriteMutex::AccessMode access)
    : acs(access), mtx(mutex)
{
    if (mtx) mtx->lock(acs);
}

inline QtReadWriteMutexLocker::~QtReadWriteMutexLocker()
{
    if (mtx) mtx->unlock(acs);
}

inline QtReadWriteMutex *QtReadWriteMutexLocker::mutex() const
{
    return mtx;
}

#endif

Copyright © 2003-2004 TrolltechTrademarks
Qt Solutions