mirror of
https://github.com/siyuan-note/siyuan.git
synced 2026-01-02 14:58:49 +01:00
问题: - /api/setting/getCloudUser 接口在启动时卡顿数百毫秒 - 根本原因:GetUser()、SetUser() 和 Conf.Save() 使用同一个锁,存在锁竞争 解决方案: 1. 将 GetUser() 改为使用读锁(RLock),允许并发读取 2. 将用户数据与配置数据分离,使用独立的 userLock 锁 - m 锁:保护配置数据的读写(Conf.Save() 使用) - userLock 锁:保护用户数据的读写(GetUser() 和 SetUser() 使用) 3. 优化 RefreshUser 函数,先尝试从内存获取用户,避免不必要的文件读取 相关文件: - kernel/model/conf.go: 添加 userLock,修改 GetUser/SetUser 使用独立锁 - kernel/model/cloud_service.go: 优化 RefreshUser 逻辑 |
||
|---|---|---|
| .. | ||
| api | ||
| av | ||
| bazaar | ||
| cache | ||
| cmd | ||
| conf | ||
| filesys | ||
| harmony | ||
| job | ||
| mobile | ||
| model | ||
| resource | ||
| search | ||
| server | ||
| sql | ||
| task | ||
| testdata | ||
| treenode | ||
| util | ||
| entrypoint.sh | ||
| go.mod | ||
| go.sum | ||
| main.go | ||
| versioninfo.json | ||