This source file includes following definitions.
- Barrier
- Unlock
#include "net/disk_cache/blockfile/file_lock.h"
#include "base/atomicops.h"
namespace {
void Barrier() {
#if !defined(COMPILER_MSVC)
base::subtle::MemoryBarrier();
#endif
}
}
namespace disk_cache {
FileLock::FileLock(BlockFileHeader* header) {
updating_ = &header->updating;
(*updating_)++;
Barrier();
acquired_ = true;
}
FileLock::~FileLock() {
Unlock();
}
void FileLock::Lock() {
if (acquired_)
return;
(*updating_)++;
Barrier();
}
void FileLock::Unlock() {
if (!acquired_)
return;
Barrier();
(*updating_)--;
}
}