Dr Stephen L S Webb created LOGCXX-546:
------------------------------------------

             Summary: Multi threaded applications run at single threaded speed
                 Key: LOGCXX-546
                 URL: https://issues.apache.org/jira/browse/LOGCXX-546
             Project: Log4cxx
          Issue Type: Bug
    Affects Versions: 0.12.0
            Reporter: Dr Stephen L S Webb


Accessing repository using rep = repository.lock() in Logger::isDisabled() 
causes all threads to be serialized when they test if their logger is enabled.

I suggest Hierarchy hold std::weak_ptr for the Loggers instead of 
std::shared_ptr in LoggerMap. 

Logger can hold a raw pointer to the LoggerRepository. The LoggerRepository 
destructor should then do
{code:java}
for (auto& item : this->loggers)
{
  if (auto pLogger = item.second.lock())
    pLogger->resetRepository();
}{code}

Logger can then test for a NULL repositiory instead of lock() on the weak 
pointer



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to