patterns

这些东西的意义就是把东西从“听说过”和“知道”上升为可以随心所欲的用出来用得好,这也是开这个thread的真正原因,编程的时候突然发现一个比较简单的东西会需要思考一下,没有在大脑里立刻浮现最佳解决方案/可能踩雷的地方/各种情况下的变通。

  • command buffer with ring/double buffer
  • ThreadSafeAssert

 


 

command buffer with ring/double buffer

基本上这个模式

 

advantages:

  • 高效而且优雅, command可以解决的问题几乎都可以用SetFlag->DetectFlag->CallFunction的模式来完成,但是相比之下command高效而且优雅。
  • 有进一步多线程的潜质----如果push进来的是particle 的update command,那么就可以用task多线程系统来consume这些command。

conditions:

  • 像mainthread和renderthread之间做resource creation这种情况,是有桢同步的概念,而且renderthread也不会一直去监控resource的情况,那么double buffer,然后sync点做swap比较合适。
  • renderthread和gpu这种,gpu只做一件事情就是consume command来处理,可以说一直在监控command的情况,那么ringbuffer是最佳选择。

 


 

ThreadSafeAssert

有些东西假设它是需要在同一个thread中运行的,因此为了安全就没有做thread safe的限制。

这个时候可以用assert做thread id的检测。

比如SmartPointer的RefCountObj.

当然这种assert方式可以推广到很多地方。

 


 

UniqueId

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值