Из-за некоторых причин применения мне нужно запустить обратный вызов для событий timer / io в другом потоке.
Пример:
void EventLoop::createIOEvent(int fd, short kind, event_cb originalCallback, void* originalUserData)
{
...
const auto data{std::make_shared<UserData>(originalUserData, originalCallback, callbackExecutor)};
event* event{event_new(_eventBase, fd, kind, EventLoop::asyncCall, data.get())};
event_add(event, nullptr);
...
}
void EventLoop::asyncCall(int fd, short kind, void* data)
{
const auto userData{*(reinterpret_cast<UserData*>(data))};
ExecutorWrapper(userData._callbackExecutor)
.addRunnable([=]() {
userData._originalCallback(fd, kind, userData._originalUserData);
})
.exec();
}
Допустимо ли использование такого подхода для libevent?
Примечание: кажется, что все отлично работает на Macos и iOS, но на Android мой тестПриложение просто закрывается без каких-либо причин.