необходимо ли каждый раз вызывать redisLibeventAttach перед вызовом redisAsyncCommand для получения данных

#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();
}