85 lines
1.3 KiB
C++
85 lines
1.3 KiB
C++
/*
|
|
ZReadWriteLock.hpp
|
|
Author: James Russell <jcrussell@762studios.com>
|
|
Created: 5/17/2012
|
|
|
|
Purpose:
|
|
|
|
RAII wrapper for SST_ReadWriteLock from libsst-concurrency.
|
|
|
|
License:
|
|
|
|
TODO
|
|
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#ifndef _ZREADWRITELOCK_HPP
|
|
#define _ZREADWRITELOCK_HPP
|
|
|
|
#include <SST/SST_ReadWriteLock.h>
|
|
|
|
#include <ZUtil/ZUtilBuild.hpp>
|
|
|
|
class ZReadWriteLock
|
|
{
|
|
private:
|
|
DISABLE_COPY_AND_ASSIGN(ZReadWriteLock);
|
|
|
|
//The SST_ReadWriteLock
|
|
SST_ReadWriteLock Lock;
|
|
|
|
public:
|
|
/*
|
|
Default Constructor.
|
|
*/
|
|
ZReadWriteLock();
|
|
|
|
/*
|
|
Destructor.
|
|
*/
|
|
~ZReadWriteLock();
|
|
|
|
/*
|
|
public LockForReading
|
|
|
|
Locks this read write lock for reading. Blocks until the lock is obtained.
|
|
|
|
@param ticks - the maximum amount of time to block
|
|
@return (bool) - true if the lock was obtained, false otherwise
|
|
*/
|
|
bool LockForReading(uint32_t ticks) const;
|
|
|
|
/*
|
|
public LockForWriting
|
|
|
|
Locks this read write lock for writing. Blocks until the lock is obtained.
|
|
|
|
@param ticks - the maximum amount of time to block
|
|
@return (bool) - true if the lock was obtained, false otherwise
|
|
*/
|
|
bool LockForWriting(uint32_t ticks);
|
|
|
|
/*
|
|
public EndReading
|
|
|
|
Signals that a read operation has completed.
|
|
|
|
@return (void)
|
|
*/
|
|
void EndReading() const;
|
|
|
|
/*
|
|
public EndWriting
|
|
|
|
Signals that a write operation has completed.
|
|
|
|
@return (void)
|
|
*/
|
|
void EndWriting();
|
|
};
|
|
|
|
#endif
|
|
|