cpp-ipc
cpp-ipc copied to clipboard
send recv里面是忙等吗?
您好,看了您demo里面send_recv的例子
发现ipc::channel的通信里面,发送者和接收者都是while(is_quit.load)这种形式
这样的话,应该会100%打满一个cpu吧,有非阻塞的模式吗?
另外,这个例子里面,似乎两个线程需要公用一个is_quit变量,这样的话是不是只适合线程间通信
如果单纯的进程间通信,可以做到,写者和读者互不感知,且读者以最快速度读取,并且读者非阻塞吗
当然不是忙等,windows会等在一个信号量上,linux则是条件变量。demo里这样写是为了方便,is_quit并不是用来通讯的。毕竟我不依赖消息循环给回调,send、recv都是同步接口,总得用一个变量标记循环吧。你希望非堵塞读取,是想回调,还是想try一下?不想等可以用try_recv接口,没数据就直接返回了。目前基于连接设计的通讯,读写确实有感知,如果非法退出了没有清理,会导致后续其他进程的通讯异常。这个问题挺难搞,因为涉及到最初设计上的变更,我也在考虑妥协一些通讯的质量保证,弱化甚至去掉连接这个概念。#123
谢谢回复,方便加个vx之类的吗,这块儿您是专家,我需要一个进程间超高速通信模块,希望可以有偿合作
可以,但我最近一直很忙。。你邮件把你微信发我哈,我来加你