TTripleBuffer无锁单消费单生产,不需要引入锁同步。

‘lvzeyue’ 6cbf83eda7 【fix】 修改 6 місяців тому
Project1 db2ddecd53 【fix】 提交文件 6 місяців тому
Project1.sln db2ddecd53 【fix】 提交文件 6 місяців тому
README.md 6cbf83eda7 【fix】 修改 6 місяців тому

README.md

TTripleBuffer

  • TTripleBuffer无锁单消费单生产,不需要引入锁同步。

  • 线程引入主要憧憬1+1趋近于2,但多线程很难做到数据独立,因此不竞争的同步显得极其美丽。

  • TTripleBuffer借鉴于UE里,在服务器里我发现大多双缓冲数据然后悲观锁,就在想单消费和单生产是不是仅仅做好同步逻辑,互斥锁的互斥逻辑可能需求过剩。

多线程问题:

  • 指令重排:TTripleBuffer数据位和标志位是一起的,读和写互不干扰主要在交换Temp位,所以避免了这个问题,自然也不用加内存屏障。
  • 线程同步:同步标志位主要是Dirty位,不存在两个同时写,只可能存在一写一读,能保证消费线程在生产之后动作。