template<class Class>
class bricks::rw_lock< Class >
A reader-writer lock.
This class implements a reader-writer lock around a shared resource. The resource can be read by multiple threads at the same time, but only one thread can write to the resource at a time. Read access is read only, write access is read-write.
Example usage:
vec.
write()->push_back(4);
INFO("Vector size: ", vec.read()->size());
{
auto r1 = vec.read();
auto r2 = vec.read();
const auto safe_read = vec.read();
for (const auto& i : *safe_read) {
INFO("Vector element: ", i);
}
INFO("Vector size: ", r1->size());
INFO("First element: ", r2->front());
}
{
auto safe_write = vec.write();
std::sort(safe_write->begin(), safe_write->end());
}
Very similar to rust's std::sync::RwLock.
- Template Parameters
-
Class | The data type to be protected. |