diff options
author | Kenneth Anthony Giusti <kgiusti@apache.org> | 2012-03-21 21:33:24 +0000 |
---|---|---|
committer | Kenneth Anthony Giusti <kgiusti@apache.org> | 2012-03-21 21:33:24 +0000 |
commit | b51489127365952db902579438294a587a7acf47 (patch) | |
tree | 720bfa3f38302247858cc718e1a51956ef354410 | |
parent | de47fd1d08f94e7a8f6ba1dab03f6e3d9f4a004b (diff) | |
download | qpid-python-b51489127365952db902579438294a587a7acf47.tar.gz |
QPID-3890: add comment describing locking rules
git-svn-id: https://svn.apache.org/repos/asf/qpid/branches/qpid-3890@1303581 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r-- | qpid/cpp/src/qpid/broker/Queue.h | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/qpid/cpp/src/qpid/broker/Queue.h b/qpid/cpp/src/qpid/broker/Queue.h index dc0c043c45..9b9acc677c 100644 --- a/qpid/cpp/src/qpid/broker/Queue.h +++ b/qpid/cpp/src/qpid/broker/Queue.h @@ -107,6 +107,22 @@ class Queue : public boost::enable_shared_from_this<Queue>, QueueListeners listeners; std::auto_ptr<Messages> messages; std::deque<QueuedMessage> pendingDequeues;//used to avoid dequeuing during recovery + /** messageLock is used to keep the Queue's state consistent while processing message + * events, such as message dispatch, enqueue, acquire, and dequeue. It must be held + * while updating certain members in order to keep these members consistent with + * each other: + * o messages + * o sequence + * o policy + * o listeners + * o allocator + * o observeXXX() methods + * o observers + * o pendingDequeues (TBD: move under separate lock) + * o exclusive OwnershipToken (TBD: move under separate lock) + * o consumerCount (TBD: move under separate lock) + * o Queue::UsageBarrier (TBD: move under separate lock) + */ mutable qpid::sys::Monitor messageLock; mutable qpid::sys::Mutex ownershipLock; mutable uint64_t persistenceId; |