Draft: Improve Container thread safety in SIP
The idea is make sure that the Container is accessed/modified in a thread-safe way, that is with a lock to the mutex that protect the underlying std::map
taken. The lock should be managed in RAII style, using a lock guard.
In Python, we need to implement the context manager protocol to make sure that iteration on the container is thread safe, while keeping backward compatibility with existing code:
with data.header as header:
for k, v in header.iteritems():
print(f'key={k}, value={v}')
The suggest solution works like this:
// dump the content of a data HeaderContainer to a stream sout
{
Data::HeaderContainer::LockedPtr l_ptr(data.header);
Data::HeaderContainer::iterator it, end = l_ptr->end();
for (it = l_ptr->begin(); it != end; ++i)
sout << it->first << " = "
<< (it->second.size() ? it->second : " ")
<< ";" << std::endl;
}
Edited by Samuel Debionne