- 积分
- 13326
- 明经币
- 个
- 注册时间
- 2015-8-18
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
本帖最后由 你有种再说一遍 于 2025-2-28 01:03 编辑
写着写着事务栈的时候突然发现,
以往对于事务不清晰的地方,都深刻认识了,
那我为什么不写成一个事务呢?
为什么需要写成自己的事务呢?
1,事务崩溃
2,并行任务
因为我已经知道acad是可以串行读取id,
组成List<Entity>后,然后并行读取属性.
这样就只需要tr.GetObject()时候上锁保证串行.
就可以规避掉串行任务期间读取id,意外并行读取的问题.
提交事务如何实现的我也已经做了.
https://www.cnblogs.com/JJBox/p/18703256#_label3_0_2_1
不过我还有一些疑问没解决,
cad内部是怎么实现 undo/redo 的?
我只有知道 undo/redo 我才能后台实现啊,
之前貌似都是前台undo/redo...
难道是维护一个巨大的历史表?
直接删掉图元...貌似也对...
虽然我不知道cad怎么实现,但是这个世界又不是没有开源数据库.
例如Mysql的MVCC原理不是大家都会了吗?
因此按照MVCC做不就得了...
xx
|
|