acl-dev / acl

C/C++ server and network library, including coroutine,redis client,http/https/websocket,mqtt, mysql/postgresql/sqlite client with C/C++ for Linux, Android, iOS, MacOS, Windows, etc..
https://acl-dev.cn
GNU Lesser General Public License v3.0
2.83k stars 937 forks source link

fiber消息队列的惊群问题 #333

Closed ChrisCatCP closed 3 months ago

ChrisCatCP commented 3 months ago

我看到fiber的文档里有写到fiber_tbox有多消费者惊群的问题,所以在多线程多协程环境下需要用什么办法来避免这个问题呢

zhengshuxin commented 3 months ago

我看到fiber的文档里有写到fiber_tbox有多消费者惊群的问题,所以在多线程多协程环境下需要用什么办法来避免这个问题呢

你是指哪篇文章?

ChrisCatCP commented 3 months ago

我看到fiber的文档里有写到fiber_tbox有多消费者惊群的问题,所以在多线程多协程环境下需要用什么办法来避免这个问题呢

你是指哪篇文章?

https://github.com/acl-dev/acl/blob/master/blog/fiber.md 这里写的

zhengshuxin commented 3 months ago

如果多个消费者协程在不同的线程中就可能存在惊群问题,如果多个消费者在同一个线程中则一般不会产生惊群现象。

ChrisCatCP commented 3 months ago

就是多个线程😣 就是看到文章里有写,但是没怎么提到有什么办法避免,只能自己指定提交到某一个线程吗

zhengshuxin commented 3 months ago

就是多个线程😣 就是看到文章里有写,但是没怎么提到有什么办法避免,只能自己指定提交到某一个线程吗

可以给每个线程创建一个 box,从各自的box里接收消息。

ChrisCatCP commented 3 months ago

好的,谢谢,明白了