apollo-platform icon indicating copy to clipboard operation
apollo-platform copied to clipboard

ShareMemory 实现中存在的问题, 请确认

Open nelsonjin opened this issue 6 years ago • 2 comments

前提: 这里仅讨论使用ShareMemory的场景

  1. mutex释放、reader_count不减问题。Subscribe端获取Manager中的mutex后,读ShareMemory内存慢会导致Block被占住。如果这样的subscriber如果占住所有block, 或者有subscriber异常退出没有释放导致block中的reader_count 不减,Publisher一端将无法写入问题, 且会在找可用block的循环逻辑里面,导致CPU 100%。

  2. TOPIC ShareMemory重置问题。 当需要publish的新消息长度超过计算出来的消息长度时,会丢弃对用Topic里面的数据, 哪怕数据没有被其他端消费。且重建ShareMemory的逻辑导致了整体代码过于复杂。

  3. 丢消息问题。Publisher 通过Signal唤醒Subscribers收取数据, 但是如果Subscriber没有及时收走数, 而Publisher publish速度较快, 会导致Subscriber拿到的智能是wrote_num对应的数据, 而不能取到当前Subscriber last_index -> wrote_num 之间的数据

麻烦开发者帮我确认一下, 先谢了。

nelsonjin avatar Nov 30 '18 11:11 nelsonjin

@nelsonjin 我也发现确实存在第一个问题,异常退出的时候,shared mem基本上不再可用。有没有什么办法可以解决呢?

mjjdick avatar May 12 '23 08:05 mjjdick

Thanks for your feedback, but I suggest if this is cyber related. I will check and feedback soon

daohu527 avatar May 13 '23 08:05 daohu527