🛰️航天仿真算法库 SpaceAST 0.3.1
载入中...
搜索中...
未找到
FileLock.hpp
浏览该文件的文档.
1
22
23#pragma once
24
25#include "AstGlobal.h"
26#include "AstUtil/StringView.hpp"
27#include <string>
28#include <memory> // for std::unique_ptr<FileLock::Impl>
29#include <type_traits>
30
31AST_NAMESPACE_BEGIN
32
63class AST_UTIL_API FileLock
64{
65public:
72
75 {
76 eLocked=0,
77 eBusy=eErrorBusy,
78 eError=-1,
79 };
80public:
83 explicit FileLock(StringView path);
84
86 ~FileLock();
87
88 A_DISABLE_COPY(FileLock)
89
90
93 errc_t lock(ELockMode mode = ELockMode::eExclusive);
94
97 errc_t tryLock(ELockMode mode = ELockMode::eExclusive);
98
103 errc_t tryLock(double timeoutSeconds, ELockMode mode = ELockMode::eExclusive);
104
106 errc_t unlock();
107private:
108 class Impl;
109 Impl& impl();
110private:
111 std::aligned_storage<sizeof(void*)>::type impl_{};
112};
113
114
117AST_NAMESPACE_END
跨进程文件锁
定义 FileLock.hpp:64
ELockMode
文件锁模式
定义 FileLock.hpp:68
@ eExclusive
排他锁:同一时刻只允许一个持有者
定义 FileLock.hpp:69
@ eShared
共享锁:允许多个持有者同时持有,与排他锁互斥
定义 FileLock.hpp:70
ELockResult
加锁结果
定义 FileLock.hpp:75