Skip to content

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

@nelsonjin

Description

@nelsonjin

前提: 这里仅讨论使用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 之间的数据

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

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions