我可以为redisGetReply超时吗?
我当前的代码是
while(redisGetReply(context,&reply) == REDIS_OK) {
//Check for isstopped
if yes return
// consume message
freeReplyObject(reply);
}
目前,如果我向程序发出SIGINT信号。当前,如果我发信号通知SIGINT和redisGetReply中的该线程。它将等待,直到服务器发出任何消息。
如何使redisGetReply在某些siganl上停止或超时以进行重新答复?
最佳答案
如您在此链接中看到的
Testing hiredis example
您可以在调用redisGetReply之前设置超时
struct timeval tv = { 0, 1000 };
assert(redisSetTimeout(c,tv) == REDIS_OK);
test_cond(redisGetReply(c,&_reply) == REDIS_ERR &&
c->err == REDIS_ERR_IO && errno == EAGAIN);
redisFree(c);