查看: 760|回复: 0

节点增删的安全操作时机

[复制链接]

该用户从未签到

发表于 2016-5-27 14:41:31 | 显示全部楼层 |阅读模式
参与人:
锐锐、威威、睿睿、牛牛、以及路人甲乙丙丁等

睿睿 10:10:05
那是什么时机可以向场景树中添加节点
路人甲 10:10:50
每一帧的preFrame和postFrame
睿睿 10:12:04
ok

锐锐 10:12:56
显然最合适的时机是GUIEventHandler
锐锐 10:13:06
或者对viewer添加Operations
锐锐 10:13:42
所谓的pre和postFrame根本不是OSG自己的东西,它与多线程的处理机制结合起来也没有任何避免冲突的能力
锐锐 10:14:28
NodeCallback中不适合添加删除节点,是因为NodeCallback本来就是在遍历节点的时候发生的,在这里不是锁的问题,是逻辑上就不应该这么做,除非自己很清楚这样不会产生连锁反应
路人甲 10:14:47
嗯对我的失误,总之在遍历节点树之前加就ok的是吧
锐锐 10:15:09
因为这就跟坐在树杈上锯大树是一个道理,您很有可能自己也因此掉下来

双双 10:17:09
嗯,遍历节点时不能做插入动作的
威威 10:17:24
可以
威威 10:17:30
谁说不可以
锐锐 10:17:39
可以,但是就是我说的,坐在树杈上锯大树
威威 10:17:42
只是不能乱插而已
牛牛 10:17:43
有时候看到有威哥的发言,像翻出来学习一下,就被几个扯淡晒图的给淹没了。
锐锐 10:17:54
自己能控制好层次,不要把自己锯下来就好
威威 10:18:09
合法插入
双双 10:18:10
一般不应该这样做吧,不然跟偏了
威威 10:18:14
合法拔出
路人乙 10:18:18
听君一席话   茅厕顿开

牛牛 10:18:32
@锐锐 请教,那你觉得不在回调里加入节点,在什么地方加入node合适呢?
威威 10:19:11
双击查看原图最安全的地方是frame之外
锐锐 10:19:16
刚才已经说过了,GUIEventHandler或者Operation
威威 10:19:35
如果非要在回调里 最好是父节点删除子节点
牛牛 10:20:07
多谢

路人乙 10:20:14
operator是在什么时机处理呀?
路人乙 10:20:22
@锐锐
威威 10:20:23
。。。反函数
威威 10:20:29

ttaw 10:21:18
更新遍历之后
威威 10:22:27
建议考虑在frame之外处理 会更自由一些 因为你们肯定要弄个MFC qt什么的
威威 10:22:42
比直接用多线程要更方便
锐锐 10:22:42
我说的是viewer的Operation
锐锐 10:22:47
frame之外处理的问题更多
威威 10:22:52
看错了
威威 10:23:12
那是你们没把frame弄到消息线程里
威威 10:23:15
他们
威威 10:23:23
非要在一个独立线程里frame
威威 10:23:29
自然是找死
威威 10:24:27
我是一只倡导简单线程的
威威 10:24:48
qt和mfc都可以把frame放到主消息线程里
双双 10:24:52
一个界面线程就够了
威威 10:24:53
但是。。。。。
威威 10:25:04
很少有人这么做
锐锐 10:25:13
mfc的线程机制比你想象的更恶心一些
威威 10:25:23
非要启动一堆线程 各种倒腾
威威 10:25:39
idle消息 是在主线程里的
锐锐 10:25:44
因为mfc本来就有UI和Worker两种线程
锐锐 10:25:48
那个图没脱,我看不出来
威威 10:25:53
至少你能确定消息是同步的
威威 10:26:21
不过很多人写MFC程序也是消息和虚函数乱用的
威威 10:26:27
这个我就无话可说了
威威 10:27:04
Qt还好  至少有个外循环
锐锐 10:28:45
qt是可以完全做到单线程运行的,但是qt有另外一个问题
威威 10:43:53
new 就不要在外面了
威威 10:43:59
他就是要单线程
威威 10:44:13
删除放在外面就行了
188062892(*********) 10:44:29
operations好像是多线程的,eventhandler也是嘛?
路人丙 10:44:34
@锐锐 也就是最合适的方式还是在EventHander里面?
威威 10:44:38
添加虽然有时候会导致遍历漏掉 但是不会导致崩溃
路人丁 10:44:39
剁手哥..私聊信息双击查看原图
威威 10:45:40
。。。你们还是在固执的使用多线程
威威 10:45:44
我就不说了
威威 10:45:47
慢慢爽吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表