#c #hiredis
Вопрос:
Я новичок в hired и пытаюсь узнать об этом. В своем коде я звоню redisLibeventAttach
каждый раз, прежде чем звонить redisAsyncCommand
для получения данных подписанного канала в потоке. Поэтому я хочу знать, нужно ли звонить redisLibeventAttach
каждый раз. Это мой пример кода:
#include <iostream>
#include <string>
#include <cstring>
#include <csignal>
#include <cstdlib>
#include <thread>
#include "hiredis/hiredis.h"
#include "hiredis/async.h"
#include "hiredis/adapters/libevent.h"
redisAsyncContext *redisAsyncSub {};
struct event_base *baseSub {};
void subCallback(redisAsyncContext *redisAsyncSubContext, void *reply, void *privateData) {
}
void subscribe() {
std::string subscribeChannelString("SUBSCRIBE channel1 channel2 channel3");
std::cout << "subscribed channels: " << subscribeChannelString << std::endl;
while (true) {
redisLibeventAttach(redisAsyncSub, baseSub); // can't we call this function before while loop only once?
redisAsyncCommand(redisAsyncSub, subCallback, nullptr, subscribeChannelString.c_str());
event_base_dispatch(baseSub);
}
}
int main() {
signal(SIGPIPE, SIG_IGN);
baseSub = event_base_new();
if (baseSub == nullptr) {
std::cerr << "Error in creating subscribe eventn";
exit(EXIT_FAILURE);
}
redisAsyncSub = redisAsyncConnect("198.198.198.198", 10000);
std::thread t1(subscribe);
t1.join();
}