mirror of
https://github.com/GeWuYou/GFramework.git
synced 2026-03-22 10:34:30 +08:00
feat(storage): 添加细粒度锁机制保证线程安全
- 通过细粒度锁机制保证线程安全,每个键都有独立的锁 - 更新文档说明线程安全特性,不同键的操作可以并发执行 - 添加存储键格式说明,支持使用 / 作为分隔符创建目录层级 - 补充异步操作安全性说明,异步IO仍使用锁保证并发访问安全
This commit is contained in:
parent
4c997ffc07
commit
3afef8cb49
@ -13,6 +13,7 @@
|
||||
- 支持同步和异步操作
|
||||
- 自动创建存储目录
|
||||
- 防止路径遍历攻击(过滤非法文件名字符)
|
||||
- 通过细粒度锁机制保证线程安全(每个键都有独立的锁)
|
||||
|
||||
### 构造函数
|
||||
|
||||
@ -125,6 +126,9 @@ settingsStorage.Write("level", "high");
|
||||
实现能够正确处理你要存储的数据类型。
|
||||
2. **错误处理**:[FileStorage](./FileStorage.cs) 的 `Read<T>(string key)` 方法会在键不存在时抛出异常,可以使用
|
||||
`Read<T>(string key, T defaultValue)` 来避免异常。
|
||||
3. **线程安全**:当前实现不是线程安全的,如需在多线程环境中使用,请添加适当的同步机制。
|
||||
3. **线程安全**:[FileStorage](./FileStorage.cs) 通过细粒度锁机制保证线程安全,每个键都有独立的锁,因此不同键的操作可以并发执行。
|
||||
4. **文件权限**:确保应用程序对指定的存储目录有读写权限。
|
||||
5. **路径安全**:[FileStorage](./FileStorage.cs) 会自动防止路径遍历攻击,因此键不能包含 `..`,并且特殊字符会被替换为下划线。
|
||||
5. **路径安全**:[FileStorage](./FileStorage.cs) 会自动防止路径遍历攻击,因此键不能包含 `..`,并且特殊字符会被替换为下划线。
|
||||
6. **存储键格式**:键可以包含 `/` 作为分隔符,这将被转换为相应的目录层级,例如 `"player/profile"` 会存储在
|
||||
`player/profile.dat` 文件中。
|
||||
7. **异步操作**:尽管异步读写操作使用了异步IO,但仍会使用锁来保证对同一键的并发访问安全。
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user