You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ac...@apache.org on 2010/04/07 22:51:15 UTC
svn commit: r931682 - in /qpid/trunk/qpid/cpp: include/qpid/log/Logger.h
src/qpid/log/Logger.cpp
Author: aconway
Date: Wed Apr 7 20:51:14 2010
New Revision: 931682
URL: http://svn.apache.org/viewvc?rev=931682&view=rev
Log:
Use read-write lock to imporve Logger concurrency.
Modified:
qpid/trunk/qpid/cpp/include/qpid/log/Logger.h
qpid/trunk/qpid/cpp/src/qpid/log/Logger.cpp
Modified: qpid/trunk/qpid/cpp/include/qpid/log/Logger.h
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/include/qpid/log/Logger.h?rev=931682&r1=931681&r2=931682&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/include/qpid/log/Logger.h (original)
+++ qpid/trunk/qpid/cpp/include/qpid/log/Logger.h Wed Apr 7 20:51:14 2010
@@ -98,6 +98,7 @@ class Logger : private boost::noncopyabl
typedef std::set<Statement*> Statements;
sys::Mutex lock;
+ sys::RWlock outputsLock;
inline void enable_unlocked(Statement* s);
Statements statements;
Modified: qpid/trunk/qpid/cpp/src/qpid/log/Logger.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/log/Logger.cpp?rev=931682&r1=931681&r2=931682&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/log/Logger.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/log/Logger.cpp Wed Apr 7 20:51:14 2010
@@ -90,21 +90,21 @@ void Logger::log(const Statement& s, con
os << msg << endl;
std::string formatted=os.str();
{
- ScopedLock l(lock);
+ sys::RWlock::ScopedRlock l(outputsLock);
std::for_each(outputs.begin(), outputs.end(),
boost::bind(&Output::log, _1, s, formatted));
}
}
void Logger::output(std::auto_ptr<Output> out) {
- ScopedLock l(lock);
+ sys::RWlock::ScopedWlock l(outputsLock);
outputs.push_back(out.release());
}
void Logger::clear() {
select(Selector()); // locked
format(0); // locked
- ScopedLock l(lock);
+ sys::RWlock::ScopedWlock l(outputsLock);
outputs.clear();
}
---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project: http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org