YuWuKunCheng
|
b7c4e60420
|
1. thread_local! 导致跨线程缓存不可见(主要问题)
kline_py.rs 中 BSP_CACHE、KLINE_IDENTITY、BAR_IDENTITY 使用了 thread_local!。主线程调用 识别买卖点() →
买卖点信息.add() 写入的是主线程的 PySet,backtrader 策略线程读取的是自己线程独立的空 PySet。
修复:将三个缓存从 thread_local! 改为全局 static + std::sync::LazyLock<RwLock<HashMap<...>>>
影响分析
这些身份缓存的影响与 KLINE_IDENTITY/BAR_IDENTITY 不同——它们只影响 Python 对象身份(is
比较),不直接影响数据内容(因为 Rust 数据通过 Arc 共享,读写都是同一份)。
具体后果:
- 不同线程访问同一个 Rust Arc 会得到不同的 Python wrapper 对象
- a is b 跨线程比较返回 False,哪怕它们包装同一个底层 Rust 对象
- 每个线程维护一份独立缓存,内存浪费(不过 wrapper 很小)
|
2026-05-30 22:15:09 +08:00 |
|
YuWuKunCheng
|
af3ebf13c8
|
修复 “cargo clippy -- -D warnings” 产生的错误
|
2026-05-30 13:25:57 +08:00 |
|
YuWuKunCheng
|
1e6025a968
|
添加 原始chan到模块
修复 相对方向的一致性
添加 观察者.投喂原始数据
|
2026-05-30 11:26:59 +08:00 |
|
YuWuKunCheng
|
fca62f3141
|
修复 买卖点一致性对齐至chan.py
|
2026-05-29 20:42:34 +08:00 |
|
YuWuKunCheng
|
e50172e923
|
修复 中枢一致性
|
2026-05-29 20:19:42 +08:00 |
|
YuWuKunCheng
|
c87fb66d34
|
修复 分型时间戳
|
2026-05-29 17:30:58 +08:00 |
|
YuWuKunCheng
|
9900266516
|
修复 买卖点
|
2026-05-29 15:01:02 +08:00 |
|
YuWuKunCheng
|
5c3179eec8
|
第八版
|
2026-05-29 04:05:36 +08:00 |
|
YuWuKunCheng
|
52823e6c75
|
修复 rust 引用问题
|
2026-05-28 01:07:16 +08:00 |
|
YuWuKunCheng
|
a67540fc95
|
第五版
|
2026-05-26 19:01:30 +08:00 |
|
YuWuKunCheng
|
104ecf0268
|
第四版
|
2026-05-26 11:03:05 +08:00 |
|
YuWuKunCheng
|
bf96517c9d
|
第二版
|
2026-05-25 11:07:08 +08:00 |
|
YuWuKunCheng
|
f92eef11fb
|
第一版
|
2026-05-25 02:16:35 +08:00 |
|