VirtualBox

Ignore:
Timestamp:
Apr 15, 2008 1:53:12 PM (17 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
29646
Message:

Main: Implemented true AutoReaderLock (#2768).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Main/include/VirtualBoxBase.h

    r6964 r7992  
    3131
    3232using namespace com;
    33 using util::AutoLock;
    34 using util::AutoReaderLock;
    35 using util::AutoMultiLock;
     33using namespace util;
    3634
    3735#include <iprt/cdefs.h>
     
    438436    : public CComObjectRootEx
    439437#endif
    440     , public AutoLock::Lockable
     438    , public Lockable
    441439{
    442440public:
     
    452450
    453451    // AutoLock::Lockable interface
    454     virtual AutoLock::Handle *lockHandle() const;
     452    virtual RWLockHandle *lockHandle() const;
    455453
    456454    /**
     
    863861    };
    864862
     863    /**
     864     * Returns a lock handle used to protect the primary state fields (used by
     865     * #addCaller(), AutoInitSpan, AutoUninitSpan, etc.). Only intended to be
     866     * used for similar purposes in subclasses. WARNING: NO any other locks may
     867     * be requested while holding this lock!
     868     */
     869    WriteLockHandle *stateLockHandle() { return &mStateLock; }
     870
    865871private:
    866872
     
    886892
    887893    /** Protects access to state related data members */
    888     RTCRITSECT mStateLock;
     894    WriteLockHandle mStateLock;
    889895
    890896    /** User-level object lock for subclasses */
    891     mutable AutoLock::Handle *mObjectLock;
     897    mutable RWLockHandle *mObjectLock;
    892898};
    893899
     
    16191625    VirtualBoxBaseWithChildren()
    16201626        : mUninitDoneSem (NIL_RTSEMEVENT), mChildrenLeft (0)
    1621     {
    1622         RTCritSectInit (&mMapLock);
    1623     }
     1627    {}
    16241628
    16251629    virtual ~VirtualBoxBaseWithChildren()
    1626     {
    1627         RTCritSectDelete (&mMapLock);
    1628     }
     1630    {}
    16291631
    16301632    /**
     
    16801682    DependentChildren mDependentChildren;
    16811683
    1682     RTCRITSECT mMapLock;
     1684    WriteLockHandle mMapLock;
     1685
    16831686    RTSEMEVENT mUninitDoneSem;
    16841687    unsigned mChildrenLeft;
     
    18251828
    18261829    /* Protects all the fields above */
    1827     AutoLock::Handle mMapLock;
     1830    RWLockHandle mMapLock;
    18281831};
    18291832
     
    19071910     *  </code>
    19081911     */
    1909     AutoLock::Handle &dependentChildrenLock() const { return mMapLock; }
     1912    RWLockHandle *dependentChildrenLock() const { return &mMapLock; }
    19101913
    19111914    /**
     
    19751978
    19761979    bool mInUninit;
    1977     mutable AutoLock::Handle mMapLock;
     1980    mutable RWLockHandle mMapLock;
    19781981};
    19791982
     
    20632066     * </code>
    20642067     */
    2065     AutoLock::Handle &dependentChildrenLock() const { return mMapLock; }
     2068    RWLockHandle *dependentChildrenLock() const { return &mMapLock; }
    20662069
    20672070    /**
     
    20972100
    20982101    /* Protects the two fields above */
    2099     mutable AutoLock::Handle mMapLock;
     2102    mutable RWLockHandle mMapLock;
    21002103};
    21012104
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette