Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

send recv里面是忙等吗? #126

Open
bethebest0622 opened this issue Aug 23, 2024 · 3 comments
Open

send recv里面是忙等吗? #126

bethebest0622 opened this issue Aug 23, 2024 · 3 comments

Comments

@bethebest0622
Copy link

您好,看了您demo里面send_recv的例子

发现ipc::channel的通信里面,发送者和接收者都是while(is_quit.load)这种形式

这样的话,应该会100%打满一个cpu吧,有非阻塞的模式吗?

另外,这个例子里面,似乎两个线程需要公用一个is_quit变量,这样的话是不是只适合线程间通信

如果单纯的进程间通信,可以做到,写者和读者互不感知,且读者以最快速度读取,并且读者非阻塞吗

@mutouyun
Copy link
Owner

当然不是忙等,windows会等在一个信号量上,linux则是条件变量。demo里这样写是为了方便,is_quit并不是用来通讯的。毕竟我不依赖消息循环给回调,send、recv都是同步接口,总得用一个变量标记循环吧。你希望非堵塞读取,是想回调,还是想try一下?不想等可以用try_recv接口,没数据就直接返回了。目前基于连接设计的通讯,读写确实有感知,如果非法退出了没有清理,会导致后续其他进程的通讯异常。这个问题挺难搞,因为涉及到最初设计上的变更,我也在考虑妥协一些通讯的质量保证,弱化甚至去掉连接这个概念。#123

@bethebest0622
Copy link
Author

谢谢回复,方便加个vx之类的吗,这块儿您是专家,我需要一个进程间超高速通信模块,希望可以有偿合作

@mutouyun
Copy link
Owner

可以,但我最近一直很忙。。你邮件把你微信发我哈,我来加你

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants