想问一下 Linux 上的 C++ 编程有什么高效的方法顺序地(单线程)处理两个两个异步的消息

2018-05-22 08:11:59 +08:00
 atmtr

主程序需要单线程来处理的两个线程产生两不同类型的消息,请问下有什么高效的方式吗?

2109 次点击
所在节点    问与答
12 条回复
yufpga
2018-05-22 08:36:28 +08:00
消息队列?或者 libev 做事件循环?
yylucifer
2018-05-22 09:30:22 +08:00
epoll 了解一下?
sqbing
2018-05-22 09:43:34 +08:00
和平台无关吧,信号量就行了
innoink
2018-05-22 10:34:55 +08:00
请问你觉得不“高效”的地方在哪
atmtr
2018-05-22 11:35:11 +08:00
@yylucifer 嗯,看了 epoll 好像是只能对流式的文件描述符进行监控对吧。我异步的消息是自己定义的通知消息,这样是不是得转到 SOCKET 去做了?会影响效率吧
yylucifer
2018-05-22 11:43:53 +08:00
@atmtr #5 似乎你对 epoll 的理解还比较浅?

推荐一本入门书你看一下: https://book.douban.com/subject/24722611/。
jessehzj
2018-05-22 11:52:49 +08:00
@yylucifer 页面不存在。。。
current
2018-05-22 11:53:24 +08:00
弄个线程安全的 queue 就可以,pipe + epoll 也可以
atmtr
2018-05-22 12:04:42 +08:00
@innoink 是在可行的当然找到效率高的,比如可以用加锁,队列之类的都是不同效率的吧
atmtr
2018-05-22 12:05:52 +08:00
@yylucifer 好的,谢谢

@jessehzj 去掉后面的 /.
chinuno
2018-05-22 12:09:55 +08:00
std:future?
linyinma
2018-05-22 17:35:05 +08:00
读楼主描述的需求有一种难受的感觉~~

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/456688

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX