2 george xiaoqiao george_xiaoqiao 于 2016.03.24 11:00 提问

linux下进程间通信,如何实现超时处理,有没有什么其他方案这个效果,让它不死等?

在linux环境下,在进程间通信时,比如“消息队列”,一般是没有超时处理的接口的,要不就是去接收,接收不到就一直死等,直到有数据过来才返回,要不就是去接收时,发现没有数据,则立即返回;
现在想实现让他去接收数据时,如果没有数据,则等待,等待一段时间后还没有数据到,则返回报错提示。
请问如何实现这个效果,或是在进程间通信方面有没有其他方案可以实现超时处理这个效果?

3个回答

oyljerry
oyljerry   Ds   Rxr 2016.03.24 20:41
已采纳

用非阻塞的api,然后自己定时判断超时

george_xiaoqiao
george_xiaoqiao 有想过,不过这样的话接收函数的实时响应不强,会有一段时间的滞后。
一年多之前 回复
george_xiaoqiao
george_xiaoqiao 有想过,不过这样的话接收函数的实时响应不强,会有一段时间的滞后。
一年多之前 回复
NK_test
NK_test   Rxr 2016.03.24 12:41

你试试select定时

george_xiaoqiao
george_xiaoqiao 请问具体可以怎么使用select去实现呢?
一年多之前 回复
u012377333
u012377333   Rxr 2016.03.29 19:38

可以设置为非阻塞的,比如等待1秒,然后重新去接受数据,就像socket的那样

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!