This is an automated email from the ASF dual-hosted git repository.
swebb2066 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/logging-log4cxx.git
The following commit(s) were added to refs/heads/master by this push:
new eef6d782 Improve throughput when concurrently logging from multiple
threads (#320)
eef6d782 is described below
commit eef6d782828cfd930b28d7e9a53bae753d44ae10
Author: Stephen Webb <[email protected]>
AuthorDate: Tue Dec 26 12:43:48 2023 +1100
Improve throughput when concurrently logging from multiple threads (#320)
---
src/main/cpp/appenderattachableimpl.cpp | 19 +++++++++----------
1 file changed, 9 insertions(+), 10 deletions(-)
diff --git a/src/main/cpp/appenderattachableimpl.cpp
b/src/main/cpp/appenderattachableimpl.cpp
index 77af4fb0..89131f34 100644
--- a/src/main/cpp/appenderattachableimpl.cpp
+++ b/src/main/cpp/appenderattachableimpl.cpp
@@ -32,7 +32,7 @@ struct AppenderAttachableImpl::priv_data
{
/** Array of appenders. */
AppenderList appenderList;
- mutable std::recursive_mutex m_mutex;
+ mutable std::mutex m_mutex;
};
@@ -54,7 +54,7 @@ void AppenderAttachableImpl::addAppender(const AppenderPtr
newAppender)
return;
}
- std::lock_guard<std::recursive_mutex> lock( m_priv->m_mutex );
+ std::lock_guard<std::mutex> lock( m_priv->m_mutex );
AppenderList::iterator it = std::find(
m_priv->appenderList.begin(),
m_priv->appenderList.end(), newAppender);
@@ -69,12 +69,11 @@ int AppenderAttachableImpl::appendLoopOnAppenders(
Pool& p)
{
int numberAppended = 0;
- std::lock_guard<std::recursive_mutex> lock( m_priv->m_mutex );
// FallbackErrorHandler::error() may modify our list of appenders
// while we are iterating over them (if it holds the same logger).
// So, make a local copy of the appenders that we want to iterate over
// before actually iterating over them.
- AppenderList allAppenders = m_priv->appenderList;
+ AppenderList allAppenders = getAllAppenders();
for (auto appender : allAppenders)
{
appender->doAppend(event, p);
@@ -86,7 +85,7 @@ int AppenderAttachableImpl::appendLoopOnAppenders(
AppenderList AppenderAttachableImpl::getAllAppenders() const
{
- std::lock_guard<std::recursive_mutex> lock( m_priv->m_mutex );
+ std::lock_guard<std::mutex> lock( m_priv->m_mutex );
return m_priv->appenderList;
}
@@ -97,7 +96,7 @@ AppenderPtr AppenderAttachableImpl::getAppender(const
LogString& name) const
return 0;
}
- std::lock_guard<std::recursive_mutex> lock( m_priv->m_mutex );
+ std::lock_guard<std::mutex> lock( m_priv->m_mutex );
AppenderList::const_iterator it, itEnd = m_priv->appenderList.end();
AppenderPtr appender;
@@ -121,7 +120,7 @@ bool AppenderAttachableImpl::isAttached(const AppenderPtr
appender) const
return false;
}
- std::lock_guard<std::recursive_mutex> lock( m_priv->m_mutex );
+ std::lock_guard<std::mutex> lock( m_priv->m_mutex );
AppenderList::const_iterator it = std::find(
m_priv->appenderList.begin(),
m_priv->appenderList.end(), appender);
@@ -130,7 +129,7 @@ bool AppenderAttachableImpl::isAttached(const AppenderPtr
appender) const
void AppenderAttachableImpl::removeAllAppenders()
{
- std::lock_guard<std::recursive_mutex> lock( m_priv->m_mutex );
+ std::lock_guard<std::mutex> lock( m_priv->m_mutex );
AppenderList::iterator it, itEnd = m_priv->appenderList.end();
AppenderPtr a;
@@ -150,7 +149,7 @@ void AppenderAttachableImpl::removeAppender(const
AppenderPtr appender)
return;
}
- std::lock_guard<std::recursive_mutex> lock( m_priv->m_mutex );
+ std::lock_guard<std::mutex> lock( m_priv->m_mutex );
AppenderList::iterator it = std::find(
m_priv->appenderList.begin(),
m_priv->appenderList.end(), appender);
@@ -167,7 +166,7 @@ void AppenderAttachableImpl::removeAppender(const
LogString& name)
return;
}
- std::lock_guard<std::recursive_mutex> lock( m_priv->m_mutex );
+ std::lock_guard<std::mutex> lock( m_priv->m_mutex );
AppenderList::iterator it, itEnd = m_priv->appenderList.end();
AppenderPtr appender;